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 相关文章推荐
JS 非图片动态loading效果实现代码
Apr 09 Javascript
Javascript中的delete介绍
Sep 02 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
详解js私有作用域中创建特权方法
Jan 25 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
利用python分析access日志的方法
Oct 26 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
利用node.js实现反向代理的方法详解
Jul 24 Javascript
Node.js pipe实现源码解析
Aug 12 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
vue中动态添加class类名的方法
Sep 05 Javascript
Vue3.0的优化总结
Oct 16 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
php相当简单的分页类
2008/10/02 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
基于python实现操作git过程代码解析
2020/07/27 Python
python如何调用php文件中的函数详解
2020/12/29 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
师范应届生教师求职信
2013/11/05 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
小学数学国培感言
2014/03/10 职场文书
课外科技活动总结
2014/08/27 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技