首页 > 编程 > JavaScript > 正文

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

2019-11-19 16:50:00
字体:
来源:转载
供稿:网友

引入主题背景: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>'     } }); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表