【发布时间】:2013-10-26 12:28:12
【问题描述】:
我想知道是否可以在评估指令的所有(或仅部分)属性(没有隔离范围)之后只执行一次回调。属性非常适合将配置传递给指令。问题是您可以分别观察每个属性并多次触发回调。
在示例中,我们有一个没有独立作用域的指令,它观察两个属性:姓名和姓氏。任何更改后action 回调被触发:
html
<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);
}
}
});
Plunkerhere.
所以效果就是一键改名改姓后,action回调被触发了两次:
name:
surname: Brown
name: John
surname: Brown
所以问题是:action 可以只被触发一次,同时更改姓名和姓氏值吗?
【问题讨论】:
标签: javascript angularjs