Angular:角度$ watch注册的最佳实践

时间:2014-05-12 20:54:45

标签: javascript angularjs watch

我在页面加载时处理查询字符串,并注意到有关$ watch的内容。

看起来$ watch需要一些时间来调用它 - 这个过程是异步的。

我发现我必须处理竞争条件,因为我的$ watch不应该触发它 - 也就是说,$ watch声明后设置的值不会被$ watch评估。 / p>

有关问题的说明,请参阅此示例:http://jsbin.com/kapifezi/24/edit

有没有人在使用手表以避免此类问题方面有最佳做法?

3 个答案:

答案 0 :(得分:1)

事实证明 - 在进一步调查之后 - 我并不完全理解$ watch是如何运作的。

http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/确实帮助了解情况。

事实证明 - 只需更改正在观看的变量就不会自动触发摘要循环。

$timeout工作的原因是因为它安全地#34;调用$digest会导致评估所有$watch个表达式 - 也就是说,$digest的{​​{1}}组件导致$timeout火和等待1000毫秒。

经验教训。

答案 1 :(得分:0)

你的意思是$ timeout内更新的值???在$ scope内将$ scope.val更改为1并且在$ scope.val更新之后将有1000毫秒的延迟

答案 2 :(得分:0)

不是真的有什么意思,但在我的控制器中,如果我需要观察一些var我这样做:

$scope.myValue = "value";
$scope.$watch("myValue", function(val) {
    if (val) {
        console.out(val);
    }
});