我有一个exapmle
,其中监视变量的值可以在当前堆栈中设置,也可以异步加载(它是封装的代码)。因此,我无法确定,如果值已更改,则在监视处理程序调用时。
我已阅读并理解this API description,但我仍然不知道如何修复我的代码。
PS:我试图致电$scope.$digest()
,但$ apply已在进行中。
答案 0 :(得分:0)
我认为为了触发$ watch函数,您需要更改" Text"的值。这是一个
代码段:
<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。