angularjs自定义指令绑定策略---‘@’绑定
2015-06-14 13:29
591 查看
接上一篇
说了“=”绑定,我们再来说“@”绑定:
如果读了我对“=”绑定的理解的读者一定知道,在我的理解中有个“桥梁”的说法,如果不知道的请先去读我的上一篇博文:http://1730634.blog.51cto.com/1720634/1661748
先看案例:
<!DOCTYPE html>
<html lang="en" ng-app="MyModule">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<input type="text" ng-model="color" placeholder="Enter a color"/>
<bind-property color-prop="{{color}}"></bind-property>
<bind-property color-prop="color"></bind-property>
<bind-property color-prop="color()"></bind-property>
</div>
</body>
<script type="text/javascript" src="../framework/angular.js"></script>
<script type="text/javascript" src="../js/scopebind@.js"></script>
</html>
scopebind@.js中的内容:
var myModule = angular.module("MyModule",[]);
myModule.directive("bindProperty",function(){
return {
scope:{
tcolor:"@colorProp"
},
restrict:'E',
template:"<input type='text' ng-model='tcolor' style='background-color:{{tcolor}}'/>",
replace:true
};
});
上面的代码已经很清晰了,写了一个bind-property的指令,绑定指令变量tcolor到模板中的color变量,@绑定是单项绑定,只有color的值变化才会导致tcolor的变化。而我多写了几个bind-property指令,直接赋值字符串“color”和“color()”,这两个字符串和color一点关系都没有,不会随着其变化为变化,因为我并没有将其和“ng-model="color"”中定义的color进行绑定,只有“{{color}}”才叫做读取了MyModule中的color的值
OK,说到这里也说得差不多了,如果觉得还是有点绕,就再去看看我对“=”绑定的理解吧,然后自己将代码复制到本地试试,多修改修改来加深理解。
补充一点:简写的方式和上篇博文中是一样的方式
说了“=”绑定,我们再来说“@”绑定:
如果读了我对“=”绑定的理解的读者一定知道,在我的理解中有个“桥梁”的说法,如果不知道的请先去读我的上一篇博文:http://1730634.blog.51cto.com/1720634/1661748
先看案例:
<!DOCTYPE html>
<html lang="en" ng-app="MyModule">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div>
<input type="text" ng-model="color" placeholder="Enter a color"/>
<bind-property color-prop="{{color}}"></bind-property>
<bind-property color-prop="color"></bind-property>
<bind-property color-prop="color()"></bind-property>
</div>
</body>
<script type="text/javascript" src="../framework/angular.js"></script>
<script type="text/javascript" src="../js/scopebind@.js"></script>
</html>
scopebind@.js中的内容:
var myModule = angular.module("MyModule",[]);
myModule.directive("bindProperty",function(){
return {
scope:{
tcolor:"@colorProp"
},
restrict:'E',
template:"<input type='text' ng-model='tcolor' style='background-color:{{tcolor}}'/>",
replace:true
};
});
上面的代码已经很清晰了,写了一个bind-property的指令,绑定指令变量tcolor到模板中的color变量,@绑定是单项绑定,只有color的值变化才会导致tcolor的变化。而我多写了几个bind-property指令,直接赋值字符串“color”和“color()”,这两个字符串和color一点关系都没有,不会随着其变化为变化,因为我并没有将其和“ng-model="color"”中定义的color进行绑定,只有“{{color}}”才叫做读取了MyModule中的color的值
OK,说到这里也说得差不多了,如果觉得还是有点绕,就再去看看我对“=”绑定的理解吧,然后自己将代码复制到本地试试,多修改修改来加深理解。
补充一点:简写的方式和上篇博文中是一样的方式
相关文章推荐
- APACHE的AcceptPathInfo指令使用介绍
- jsp的常用指令有哪些(编译指令/动作指令整理)
- angular.element方法汇总
- angularJS 中$attrs方法使用指南
- Angular用来控制元素的展示与否的原生指令介绍
- AngularJS语法详解
- angularjs中的e2e测试实例
- 使用angular写一个hello world
- vue,angular,avalon这三种MVVM框架优缺点
- AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
- AngularJS的内置过滤器详解
- angularJS结合canvas画图例子
- 教你用AngularJS框架一行JS代码实现控件验证效果
- AngularJS入门教程(零):引导程序
- AngularJS基础学习笔记之简单介绍
- AngularJS入门教程(二):AngularJS模板
- ANGULARJS中用NG-BIND指令实现单向绑定的例子
- Angular中的Promise对象($q介绍)
- AngularJS入门教程之Hello World!
- AngularJS基础知识