一个非常简短的问题:在Angular中,是否有任何方法可以获得$watch
触发的“根本原因”?
假设您有以下JavaScript代码:
$scope.$watch("foo", function(value){
// here I'd like to know if the change is triggered
// due to change in ngModel or through ngClick
};
$scope.changeFoo = function(){
$scope.foo = "bar"
};
这是HTML:
<input ng-model="foo">
<button ng-click="changeFoo()">Change Foo > Bar</button>
在我的$watch
我想知道是什么导致它被解雇了。在这种情况下,它是ngModel
中的更改还是ngClick
函数中我的值发生了变化?
答案 0 :(得分:6)
不,当前的实现无法做到这一点。
触发 $watch
运行名为$apply
的函数。该功能不知道是谁触发了它。
您将需要另一个视角来解决您的问题。
答案 1 :(得分:1)
不,我们无法知道触发它的是什么。检查此问题how-to-get-the-dom-element-that-triggered-ng-change,可能尝试编写自定义指令以将更多信息传递给控制器,这是获取触发器的可能方法。