是否可以在$ watch的scope属性上设置一个不触发$ watch回调的值?

Fra*_*isc 7 angularjs

是否可以设置count而不是触发$watch回调?

$scope.count=1;
$scope.$watch('count',function(){...});
Run Code Online (Sandbox Code Playgroud)

谢谢.

Mat*_*ert 9

您可以使用setTimeout等待Angular的摘要周期完成,然后运行您的代码:

setTimeout(function(){
    $scope.count = 1;
},0)
Run Code Online (Sandbox Code Playgroud)

这样,角度代码完成运行,检查更改,然后设置属性而不涉及Angular.

  • 我真的不希望这是答案.似乎有点hacky.但它有点像魅力.使用`$ timeout`确实_not_工作可能是因为angular知道做另一个`$ digest`. (2认同)

oor*_*ori 4

否,但您可以在回调中添加控制变量逻辑

$scope.$watch('count',function(){
 if ($scope.bypass) return;
 //else ....
});
Run Code Online (Sandbox Code Playgroud)