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

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

1:先说指令域scope的@

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

AngularJS.html

 
 
   
 
  
   
 
 
//这个必须指定的,这里的title是指令里scope的@对应的,t就是控制域scope下的 我的angularjs

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:'
{{title}}
' } });

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

2:再说说Scope的=

angularjs.html

 
 
   
 
  
   
 
 
//和上面相比,这个直接赋值等于scope域下的t了

{{title}}

我的angularjs

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:'
{{title}}
' } });

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

angularjs.html代码如下:

 
 
   
 
  
   
 
 
//先比=,函数赋值的形式,而logchore函数必须是域scope下声明的函数

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:'
' } });

如果logchore带有参数,

angularjs.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:'
' } });

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

你可能感兴趣的:(angularjs指令之绑定策略(@、=、&))