[TOC]
2016年4月13日
angularjs
angularJs的自定义指令
angular.module
directive
restrict的四种定义方式
C 只限类名使用
必须设置 restrict 的值为 "C" 才能通过类名来调用指令。
M 只限注释使用
必须设置 restrict 的值为 "M" 才能通过注释来调用指令。
需要在该实例添加 replace 属性, 否则评论是不可见的。
restrict 默认值为 EA, 即可以通过元素名和属性名来调用指令。
<script>
var m1 = angular.module('myApp',[]);
m1.directive('myHello',function(){
return {
restrict : 'AECM', //区分大小写,而且是可以组合使用的
replace : true,
template : '<div>hello angular</div>'
};
});
m1.controller('Aaa',['$scope',function($scope){
}]);
</script>
<my-hello></my-hello>
<p my-hello></p>
<p class="my-hello"></p>
<!-- directive:my-hello -->
也可以引入外部文件:
m1.directive('myTab',function(){
return {
restrict : 'E',
replace : true,
templateUrl : 'temp2.html'
};
});
m1.directive('myTab',function(){
return {
restrict : 'E',
replace : true,
//scope : true,
//每一个标签元素都可以用ng-init定义独立的作用域。
scope : {
myId : '@',
myName : '=',
myFn : '&'
},
controller : ['$scope',function($scope){
$scope.name = 'miaov';
}],
//引入第三方文件
templateUrl : 'temp2.html'
};
});
决定一个指令可如何被使用(例如元素、属性、CSS class 或 注释)。
用于创建一个子 scope 或孤立的 scope 。
定义指令的输出内容。可以包含 HTML 、数据绑定表达式,甚至是其它指令。
提供指令所用模版的路径。如果模版被定义在 < script> 内,那它可以包含一个 DOM 元素的 id 。
其中隔离作用域中的变量绑定到属性名称,属性中的值为字符串值、控制器中的变量或者函数。隔离作用域和属性的之间的绑定策略有如下三种:
@:绑定的属性值为字符串。此时没有与controller交互。
=:绑定的属性值为变量。此时与controller有交互。
&:绑定的属性值为函数。此时与controller有交互。
http://blog.csdn.net/GAMEloft9/article/details/50848016
<script>
var m1 = angular.module('myApp',[]);
m1.directive('myTab',function(){
return {
restrict : 'E',
replace : true,
//scope : true,
scope : {
myId : '@',//myId等于my-id,js标识符不支持横线(-),但可以转为驼峰命名法。绑定指定的字符串。
myName : '=',//解释的是数据,
myFn : '&'//绑定父级的函数
},
controller : ['$scope',function($scope){
$scope.name = 'miaov';
}],
templateUrl : 'temp2.html'
};
});
m1.controller('Aaa',['$scope',function($scope){
$scope.name = 'hello';
$scope.show = function(n){
alert(n);
};
}]);
</script>
<body ng-controller="Aaa">
<!-- 留意传参的两种方式。 -->
<my-tab my-id="div1" my-name="name" my-fn="show('hello')"></my-tab>
<my-tab my-id="div2" my-name="name" my-fn="show(num)"></my-tab>
</body>
tab代码
<div id="{{myId}}">
<input class="active" type="button" value="1" ng-click="myFn({num:456})">
<input type="button" value="2">
<input type="button" value="3">
<div style="display:block">{{name}}</div>
<div>22222222</div>
<div>33333333</div>
</div>
javascript
valueOf() 函数详解
valueOf()函数返回指定对象的原始值。
以毫秒数存储的时间值,从 UTC 1970 年 1 月 1 日午夜开始计算。
// Array:返回数组对象本身
var array = ["CodePlayer", true, 12, -5];
document.writeln( array.valueOf() === array ); // true
// Date:当前时间距1970年1月1日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
document.writeln( date.valueOf() ); // 1376838719230
// Number:返回数字值
var num = 15.26540;
document.writeln( num.valueOf() ); // 15.2654
// 布尔:返回布尔值true或false
var bool = true;
document.writeln( bool.valueOf() === bool ); // true
// new一个Boolean对象
var newBool = new Boolean(true);
// valueOf()返回的是true,两者的值相等
document.writeln( newBool.valueOf() == newBool ); // true
// 但是不全等,两者类型不相等,前者是boolean类型,后者是object类型
document.writeln( newBool.valueOf() === newBool ); // false
// Function:返回函数本身
function foo(){
}
document.writeln( foo.valueOf() === foo ); // true
var foo2 = new Function("x", "y", "return x + y;");
document.writeln( foo2.valueOf() === foo2 ); // true
// Object:返回对象本身
var obj = {name: "张三", age: 18};
document.writeln( obj.valueOf() === obj ); // true
// String:返回字符串值
var str = "http://www.365mini.com";
document.writeln( str.valueOf() === str ); // true
// new一个字符串对象
var str2 = new String("http://www.365mini.com");
// 两者的值相等,但不全等,因为类型不同,前者为string类型,后者为object类型
document.writeln( str2.valueOf() === str2 ); // false
toString() 函数详解
toString()函数用于将当前对象以字符串的形式返回。
将 Array 的每个元素转换为字符串,并将它们依次连接起来,两个元素之间用英文逗号作为分隔符进行拼接。
如果布尔值是true,则返回"true"。否则返回"false"。
返回如下格式的字符串,其中 functionname 是一个函数的名称,此函数的 toString 方法被调用: "function functionname() { [native code] }"
返回数值的字符串表示。还可返回以指定进制表示的字符串,请参考Number.toString()。
返回"[object ObjectName]",其中 ObjectName 是对象类型的名称。
//数组
var array = ["CodePlayer", true, 12, -5];
document.writeln( array.toString() ); // CodePlayer,true,12,-5
// 日期
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
document.writeln( date.toString() ); // Sun Aug 18 2013 23:11:59 GMT+0800 (中国标准时间)
// 日期2
var date2 = new Date(1099, 7, 18, 23, 11, 59, 230);
document.writeln( date2.toString() ); // Fri Aug 18 1099 23:11:59 GMT+0800 (中国标准时间)
// 数字
var num = 15.26540;
document.writeln( num.toString() ); // 15.2654
// 布尔
var bool = true;
document.writeln( bool.toString() ); // true
// Object
var obj = {name: "张三", age: 18};
document.writeln( obj.toString() ); // [object Object]
// HTML DOM 节点
var eles = document.getElementsByTagName("body");
document.writeln( eles.toString() ); // [object NodeList]
document.writeln( eles[0].toString() ); // [object HTMLBodyElement]
typeof 操作符
typeof操作符返回一个字符串,表示未经求值的操作数(unevaluated operand)的类型。
函数对象 (implements [[Call]] in ECMA-262 terms)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof