在我的 Angular 应用程序中,我有一个消息数组,每个消息都有一个页面数组,应该在这些页面上显示它:
[{
message: 'Foo',
showOnPage: [1, 3],
viewed: false
},{
message: 'Bar',
showOnPage: [2, 3],
viewed: true
}]
这是在应用程序加载时从服务器获取的,然后与来自服务器的推送事件保持同步。在页面之间导航时不会重新加载。
我有一个指令来显示这些消息,它采用数组和页面 ID,并且只显示当前页面尚未查看的消息。到目前为止,一切都很好。
现在我想设置viewed
为true
一旦消息显示一次。如果我一显示就这样做,那么数据绑定将立即将其从视图中删除。如果我在范围内$destroy
这样做,只要用户导航到另一个角度页面,它就可以工作。如果用户刷新或关闭选项卡,或导航到外部 URL,则viewed
保持false
. 我不能使用onbeforeunload
,因为我需要执行 AJAX 请求来更新服务器上的消息。而且我不想使用一次绑定,因为这会阻止显示任何新消息。
在显示后更新属性似乎是一个相当合理的要求,但我对如何实现它的想法感到困惑。有什么建议么?