在下文中,我必须致电$scope.$apply()
以启动摘要周期并更新视图。
service.doSomething()
.then(function(result) {
$scope.thing = result;
$scope.$apply(); // <--- Why?
});
为什么$q
在解析承诺时不会启动摘要周期?
我遇到的问题是,如果我在单元测试中模拟doSomething()
方法并返回已解决的promise,我必须在检查结果之前在测试中调用$scope.$apply()
。这自然导致$digest already in progress
错误,因为$scope.$apply()
连续两次被调用。