这段时间在学习angularjs,对directive指令的绑定策略弄了好久才明白,现在做下笔记方便以后查阅,若有错误欢迎指出。
为了使新的指令作用域能访问当前的作用域的一些属性,通常会使用@、=、&三种方式进行绑定
<div ng-controller="ctrl">
<test-dire name="taven" age="myAge" on-send="test(name)" on-call="test1({key2, key1})"></test-dire>
</div>
<script>
angular.module('myApp', ['test'])
.controller('ctrl', function($scope){
$scope.name = 'hello world';
$scope.myAge = 'three';
$scope.test1 = function(obj){
alert(JSON.stringify(obj)); // {"key2":"three","key1":"taven"}
};
$scope.test = function(str){
alert(str); //taven
};
}); angular.module('test', [])
.directive('testDire', function () {
return{
restrict: 'ECMA',
replace: true,
template: '<div ng-click="onSend({name})" ng-mouseenter="onCall({key1:name,key2:age})">指令:@{{name}} , ={{age}}</div>',
scope: {
name: '@name', //绑定'test-dire'标签name属性值 (name='taven'),即绑定'taven'
age: '=age', //绑定当前作用域中属性名为'test-dire'标签age的属性值(age="myAge"),即绑定$scope.myAge 也就是 'three'
onCall: '&', //绑定'test-dire'标签on-send属性的test方法,并将当前指令绑定name和age值传递给该方法
onSend: '&' //将当前指令绑定name值传递给该方法
}
}
}); </script>