繁体   English   中英

Angular:获取触发$ watch的原因

[英]Angular: obtain cause of a $watch to be triggered

一个非常简短的问题:在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的变化还是我的值在ngModel的功能中ngClick

不,当前的实施没有办法做到这一点。

$watch被触发运行一个名为$apply的函数。 该功能不知道是谁触发了它。

您将需要另一个视角来解决您的问题。

不,我们无法知道触发它的原因。 检查这个问题如何获取dom-element-that-triggered-ng-change ,可能尝试编写自定义指令以将更多信息传递给控制器​​,这是一种获取触发器的可能方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM