我不知道在评估指令的所有(或只有一些)属性(没有隔离范围)后,是否可以执行一些回调一次.属性非常好地将配置传递给指令.事情是你可以分别观察每个属性,并多次触发回调.
在这个例子中,我们有一个没有隔离范围的指令,它可以观察到两个属性:name和surname.任何更改操作回调触发后:
<button ng-click="name='John';surname='Brown'">Change all params</button> <div person name="{{name}}" surname="{{surname}}"></div>
JS
angular.module('app',[]). directive('person',function() { return { restrict: 'A',link: function($scope,$elem,$attrs) { var action = function() { $elem.append('name: ' + $attrs.name + '<br/> surname: ' + $attrs.surname+'<br/><br/>'); } $attrs.$observe('name',action); $attrs.$observe('surname',action); } } });
Plunker here.
所以效果是,一次点击后更改名称和姓氏后,动作回调将被触发两次:
name: surname: Brown name: John surname: Brown
所以问题是:只要改变名称和姓氏值,一次就可以发起动作?