角。同步和异步代码的不明确的$ watch行为

时间:2014-07-30 09:46:00

标签: javascript angularjs angularjs-scope watch

我有一个exapmle,其中监视变量的值可以在当前堆栈中设置,也可以异步加载(它是封装的代码)。因此,我无法确定,如果值已更改,则在监视处理程序调用时。

我已阅读并理解this API description,但我仍然不知道如何修复我的代码。

PS:我试图致电$scope.$digest(),但$ apply已在进行中。

2 个答案:

答案 0 :(得分:0)

我认为为了触发$ watch函数,您需要更改" Text"的值。这是一个

working fiddle

代码段:

<input type="text" ng-model="text" />

答案 1 :(得分:0)

只要调用$scope.$digest,就会调用watch函数(这由$ apply函数调用)。 {strong>浏览器事件(点击,keydown ..), $ http 请求已完成, $ timeouts 也会调用$digest

我认为你需要在这里使用$ timeout服务而不是setTimeout

  $timeout(function() {
            deferred.resolve('test value');

        }, 0);

http://jsfiddle.net/Byca5/7/。这将触发$ scope。$在超时完成后申请。

当加载控制器或创建$ scope时,将立即设置async = false值。因此,当第一个$ digest周期发生时,$ scope.text没有变化。这就是为什么newVal == oldvalue。

相关问题