javascript – 在内部更改Notification Factory模型后,Angular ng-repeat不会更新
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在内部更改Notification Factory模型后,Angular ng-repeat不会更新,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1445字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 在内部更改Notification Factory模型后,Angular ng-repeat不会更新](/upload/InfoBanner/zyjiaocheng/809/3cafecb3b56841ca8d41ac52f2f1dd85.jpg)
在我的Angular应用程序中,我有一个简单的通知工厂,它允许我存储和获取我想传达给用户的信息:
(function() {
'use strict';
angular
.module('peaches')
.factory('NotificationFactory', factory);
// factory.$inject = ['dependencies'];
/* @ngInject */
function factory() {
var messages = [];
var service = {
postAlert: postAlert,
getAlerts: getAlerts,
deleteAlert: deleteAlert
};
return service;
function postAlert(alert) {
messages.push(alert);
if (alert.duration) {
setTimeout(function() {
deleteAlert(alert);
}, alert.duration)
}
}
function getAlerts() {
return messages;
}
function deleteAlert(alert) {
messages.splice(messages.indexOf(alert), 1);
}
}
})();
正如您在postAlert函数中看到的,我希望能够在持续时间毫秒之后删除通知,如果所述通知具有持续时间属性.
目的是让某些类型的通知在几秒钟后自动消失,而不是要求交互关闭.
这是一个示例通知:
var reportSaved = {
msg: "Report saved.",
type: "success",
duration: 1500
}
然而,正在发生的事情是,即使setTimeout按预期工作并在设置的持续时间之后有效地删除通知,该元素仍然被绘制,直到我更改页面(之后它按预期消失),因此ng-repeat永远不会更新从我的工厂内部调用deleteAlert之后.
这是HTML:
<div class="notification" ng-repeat="alert in vm.alerts(); track by $index" ng-cloak>
<i ng-if="alert.type === 'notification'" class="fa fa-spinner"></i><i ng-if="alert.type === 'success'" class="fa fa-check-circle"></i> {{alert.msg}}
</div>
解决这个问题的最佳方法是什么?
解决方法:
尝试使用angular $timeout而不是setTimeout.区别在于$timeout运行摘要周期,这是ng-repeat更新值所需的.
内容总结
以上是互联网集市为您收集整理的javascript – 在内部更改Notification Factory模型后,Angular ng-repeat不会更新全部内容,希望文章能够帮你解决javascript – 在内部更改Notification Factory模型后,Angular ng-repeat不会更新所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。