为什么在$ scope上更改模型后没有调用$ digest?

时间:2014-07-26 20:17:27

标签: angularjs

我有一个异步调用,它在$scope上更改了一个值。完成后,我看不到我的视图已更新,但如果我追加$scope.digest(),我会看到视图更新。 e.g。

// a doesn't update in view
$rootScope.$on('some_event', function() {
    $scope.a = true;
});

// a does update in view
$rootScope.$on('some_event', function() {
    $scope.a = true;
    $scope.$digest();
});

根据http://www.sitepoint.com/understanding-angulars-apply-digest/ $digest周期重复,直到$scope已经确定(至少两次)。

为什么我不会看到此更新?

谢谢!

1 个答案:

答案 0 :(得分:1)

通过$emit$broadcast函数调度事件调用不要启动摘要周期本身。因此,如果您从异步代码(例如window.setTimeout或某些第三方库)调度了事件,则必须在事件处理程序中使用$scope.$apply或在触发事件的代码中使用$scope.$digest