首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular's $rootScope#$digest

Angular's $rootScope#$digest
EN

Stack Overflow用户
提问于 2014-01-05 08:09:22
回答 2查看 6.4K关注 0票数 1

在阅读这本优秀的书(Mastering Web Development in AngularJS)时,我遇到了以下代码:

代码语言:javascript
运行
复制
var Restaurant = function ($q, $rootScope) {

var currentOrder;

this.takeOrder = function (orderedItems) {
    currentOrder = {
    deferred:$q.defer(),
    items:orderedItems
};
    return currentOrder.deferred.promise;
};
this.deliverOrder = function() {
    currentOrder.deferred.resolve(currentOrder.items);
    $rootScope.$digest();
};
this.problemWithOrder = function(reason) {
    currentOrder.deferred.reject(reason);
    $rootScope.$digest();
};

我的理解是,进行$rootScope.$digest();调用是为了提醒Angular Promise的状态已经更新。

我的理解正确吗?另外,是否有必要进行上述$rootScope.$digest();调用?

EN

回答 2

Stack Overflow用户

发布于 2014-01-05 09:20:11

$scope.$digest()处理当前和子范围内的所有$watch事件。它基本上是手动告诉作用域检查作用域变量是否已更改。当您在控制器或指令中时,您通常不希望使用它,因为$scope.$apply()函数无论如何都会调用$digest,并且它会在您改变作用域变量时调用。

请查看此link以获取示例。

票数 1
EN

Stack Overflow用户

发布于 2016-02-02 18:35:09

在这里你不需要$rootScope.$digest .because解析/拒绝promise将触发$rootScope.$digest内部,因为$intervel$timeout$http(在请求完成后)会为你做这件事。并且这个$digest可以抛出已经在进行中的$digest的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20928374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档