我尝试显示来自$ exceptionHandler factory的错误消息,生命周期为5秒。所以我有一个带有以下代码的视图
<div class="messages">
<div class="message" ng-repeat="message in errors">
{{message}}
</div>
</div>
和工厂
services.factory('$exceptionHandler',function ($injector) {
return function(exception, cause) {
var $rootScope = $injector.get('$rootScope');
$rootScope.errors = $rootScope.errors || [];
$rootScope.errors.push(exception.message);
setTimeout(function(){
$rootScope.errors.splice(0,1);
}, 5000);
};
});
消息显示正常,但从数组中删除后,它们仍然存在于视图中。我想我需要用$ digest和$ apply做点什么,但我不明白什么。需要帮助!
答案 0 :(得分:3)
当您使用角色setTimeout
服务时,您正在使用$timeout
。
当setTimeout
有角度触发回调时,我们不知道它必须刷新html。如果您使用$timeout
代替,那么它将知道在回调完成后rtun一个摘要循环并且您的页面应该正确更新。
您还可以从回调中明确触发摘要循环,有时您必须这样做,但是对于超时,只需使用提供的服务。