这是我目前使用 $ watch 来解决对customVar回调的问题......
module.directive('mudirective', function() {
return {
scope: {
callback: '&'
},
template: '<h1>Hello</h1><button ng-click="changeVaar()>Click</button>"',
controller: function($scope) {
$scope.customVar = false;
$scope.changeVaar = function() {
// some large logical execution
// which set customeVar
$scope.customVar = '';//some value assgined
};
},
link: function($scope) {
$scope.$watch('customVar', function() {
$scope.callback();
});
}
};
});
但我想替换这个$watch with setter
...
任何人都可以知道它怎么可能?
OR
avoid $watch
功能的其他选项,但{v> 的fire callback
更改。
但是一旦确认 customVar ,回调就应该触发 指令本身也发生了变化。
答案 0 :(得分:0)
首先,我将回答问题下的评论。我有一个用例,当我看到一个控制器将观察者放置在一个作用域值上,以仅检测更改时,而仅通过控制器本身内部的分配来更改该值。
手表正在调用一个函数,该函数根据分配的值(无论是否为空,无论如何)来更新UI。
当然,我们可以在每次分配时调用此函数。或者将手表替换为设置参数值的函数,然后调用该函数。但是以某种方式,使用二传手更“透明”,进行了最少的更改,并且您一定不会错过任务。
事后看来,它与MobX的工作方式类似(如果您需要进行复杂的依赖监视,请参阅此库)。
第二,这是操作方法:
Object.defineProperty($scope, 'watchedValue',
{
set(newValue) { $scope._watchedValue = newValue; this.doSomethingWith(newValue); },
get() { return $scope._watchedValue; },
});