gpt4 book ai didi

javascript - AngularJS,将更改应用于工厂的 View

转载 作者:行者123 更新时间:2023-11-29 19:15:59 24 4
gpt4 key购买 nike

我尝试显示来自 $exceptionHandler 工厂的错误消息,生命周期为 5 秒。所以我有以下代码的 View

<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);
};
});

消息显示正常,但在将它们从数组中删除后,它们仍然存在于 View 中。我想我需要用 $digest 和 $apply 做点什么,但我不明白是什么。需要帮助!

最佳答案

当您应该使用 Angular 的 $timeout 服务时,您却在使用 setTimeout

当回调被 setTimeout 触发时,angular 不知道它必须刷新 html。如果您改用 $timeout,那么它会知道在回调完成后执行摘要循环,并且您的页面应该正确更新。

您还可以从回调内部显式触发摘要循环,有时您必须这样做,但对于超时,只需使用提供的服务即可。

关于javascript - AngularJS,将更改应用于工厂的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com