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字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 Javascript
Js组件的一些写法
Sep 10 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
JavaScript组合模式学习要点
Aug 26 Javascript
实例解析Array和String方法
Dec 14 Javascript
Javascript下拉刷新的简单实现
Feb 14 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
vue-for循环嵌套操作示例
Jan 28 Javascript
从零开始学习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
有道搜索和IP138的IP的API接口(PHP应用)
2012/11/29 PHP
PHP中SimpleXML函数用法分析
2014/11/26 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
在JavaScript中获取请求的URL参数
2010/12/22 Javascript
JS简单计算器实例
2015/01/20 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
Highcharts学习之数据列
2016/08/03 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
github配置使用指南
2014/11/18 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Tesserocr库的正确安装方式
2018/10/19 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Tensorflow设置显存自适应,显存比例的操作
2020/02/03 Python
python requests.get带header
2020/05/05 Python
python接口自动化框架实战
2020/12/23 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
2015年教师新年寄语
2014/12/08 职场文书
培训师岗位职责
2015/02/14 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
Go语言grpc和protobuf
2022/04/13 Golang