angularjs指令之绑定策略(@、=、&)


Posted in Javascript onApril 13, 2017

引入主题背景:angular 的指令配置中的template可以直接使用硬编码写相应的代码,不过也可以根据变量,进行动态更新。那么需要用到那些变量,因用法的不同,所以需要设置合适的绑定策略。

1:先说指令域scope的@

我觉得描述很费劲,直接用代码来阐述:

AngularJS.html

<!doctype html> 
<html ng-app='myApp'> 
 <head>  
 
 </head> 
 <body>  
 
 <div ng-controller="listCtrl">  
 <input type="text" ng-model="t" /> 
  <kid title="{{t}}" > //这个必须指定的,这里的title是指令里scope的@对应的,t就是控制域scope下的 
  <span>我的angularjs</span> 
 </kid> 
</div> 
<script type="text/javascript" src="angular.js"></script> 
<script type="text/javascript" src="main05.js"></script> 
</body></html>

main05.js

var myApp=angular.module('myApp',[]); 
myApp.controller('listCtrl',function($scope){ 
 $scope.logchore="motorola"; 
}); 
 
 
myApp.directive('kid',function(){ 
 return { 
  'restrict':'E', 
  scope:{ 
   title:"@" 
  }, 
  template:'<div >{{title}}</div>' 
   
 } 
});

在输入框输入数字会绑定到指令模板的title中。

2:再说说Scope的=

angularjs.html

<!doctype html> 
<html ng-app='myApp'> 
 <head>  
 
 </head> 
 <body>  
 
 <div ng-controller="listCtrl">  
 <input type="text" ng-model="t" /> 
  <kid title="t" > //和上面相比,这个直接赋值等于scope域下的t了 
  <p>{{title}}</p> 
  <span>我的angularjs</span> 
 </kid> 
</div> 
<script type="text/javascript" src="angular.js"></script> 
<script type="text/javascript" src="main05.js"></script> 
</body></html>

main05.js代码如下:

var myApp=angular.module('myApp',[]); 
myApp.controller('listCtrl',function($scope){ 
 $scope.logchore="motorola"; 
}); 
 
 
myApp.directive('kid',function(){ 
 return { 
  'restrict':'E', 
  scope:{ 
   title:"=" 
  }, 
  template:'<div >{{title}}</div>' 
   
 } 
});

3:最后说&,这个是用来方法调用的

angularjs.html代码如下:

<!doctype html> 
<html ng-app='myApp'> 
 <head>  
 
 </head> 
 <body>  
 
 <div ng-controller="listCtrl">  
  <kid flavor="logchore()" ></kid> //先比=,函数赋值的形式,而logchore函数必须是域scope下声明的函数 
</div> 
<script type="text/javascript" src="angular.js"></script> 
<script type="text/javascript" src="main05.js"></script> 
</body></html>

main05.js代码如下:

var myApp=angular.module('myApp',[]); 
myApp.controller('listCtrl',function($scope){ 
 $scope.logchore=function(){ 
  alert('ok'); 
 }; 
}); 
 
 
myApp.directive('kid',function(){ 
 return { 
  'restrict':'E', 
  scope:{ 
   flavor:"&" 
  }, 
  template:'<div ><button ng-click="flavor()"></button></div>' 
   
 } 
});

如果logchore带有参数,

angularjs.html代码如下:

<!doctype html> 
<html ng-app='myApp'> 
 <head>  
 
 </head> 
 <body>  
 
 <div ng-controller="listCtrl">  
 
  <kid flavor="logchore(t)" ></kid> 
 
</div> 
<script type="text/javascript" src="angular.js"></script> 
<script type="text/javascript" src="main05.js"></script> 
</body></html>

main05.js代码如下:

var myApp=angular.module('myApp',[]); 
myApp.controller('listCtrl',function($scope){ 
 $scope.logchore=function(x){ 
  alert(x); 
 }; 
}); 
 
 
myApp.directive('kid',function(){ 
 return { 
  'restrict':'E', 
  scope:{ 
   flavor:"&" 
  }, 
  template:'<div > <input type="text" ng-model="v" /> <button ng-click="flavor({t:v})"></button></div>' 
   
 } 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript arguments 传递给函数的隐含参数
Aug 21 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
JavaScript 学习历程和心得分享
Dec 12 Javascript
在Firefox下js select标签点击无法弹出
Mar 06 Javascript
js中把JSON字符串转换成JSON对象最好的方法
Mar 21 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
JavaScript实现点击单元格改变背景色的方法
Feb 12 Javascript
使用jquery.qrcode.js生成二维码插件
Oct 17 Javascript
微信小程序 地图(map)实例详解
Nov 16 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 #Javascript
详解angularJs指令的3种绑定策略
Apr 13 #Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
Apr 13 #Javascript
Vue组件tree实现树形菜单
Apr 13 #Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
Apr 13 #Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 #Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
Apr 13 #Javascript
You might like
php INI配置文件的解析实现分析
2011/01/04 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
Laravel实现表单提交
2017/05/07 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
深入理解vue.js双向绑定的实现原理
2016/12/05 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
JS实现简易留言板(节点操作)
2020/03/16 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
python的几种开发工具介绍
2007/03/07 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
联想哥伦比亚网上商城:Lenovo Colombia
2017/01/10 全球购物
您在慕尼黑的跑步商店:Lauf-bar
2019/10/11 全球购物
运动会解说词100字
2014/01/31 职场文书
情人节寄语大全
2014/04/11 职场文书
医师定期考核实施方案
2014/05/07 职场文书
2014教师研修学习体会
2014/07/08 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
销售经理工作失职检讨书
2014/10/24 职场文书
冰雪公主观后感
2015/06/16 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书