Angularjs 显示后更新数据

Angularjs 显示后更新数据,angularjs,angularjs-scope,angularjs-bindings,Angularjs,Angularjs Scope,Angularjs Bindings,在我的Angular应用程序中,我有一个消息数组,每个消息都有一个页面数组,应该在上面显示: [{ message: 'Foo', showOnPage: [1, 3], viewed: false },{ message: 'Bar', showOnPage: [2, 3], viewed: true }] 这是在应用程序加载时从服务器获取的,然后与来自服务器的推送事件保持同步。在页面之间导航时不会重新加载 我有一个显示这些消息的指令,它采用数

在我的Angular应用程序中,我有一个消息数组,每个消息都有一个页面数组,应该在上面显示:

[{
    message: 'Foo',
    showOnPage: [1, 3],
    viewed: false
},{
    message: 'Bar',
    showOnPage: [2, 3],
    viewed: true
}]
这是在应用程序加载时从服务器获取的,然后与来自服务器的推送事件保持同步。在页面之间导航时不会重新加载

我有一个显示这些消息的指令,它采用数组和页面ID,只显示当前页面中尚未查看的消息。到目前为止还不错

现在,一旦消息显示一次,我想将查看的
设置为
true
。如果我一显示它就执行此操作,那么数据绑定将立即将其从视图中删除。如果我在scope
$destroy
上执行此操作,只要用户导航到另一个角度页面,它就可以工作。如果用户刷新或关闭选项卡,或导航到外部URL,则查看的
将保持
false
。我不能使用
onbeforeuload
,因为我需要执行AJAX请求来更新服务器上的消息。我不想使用bind一次,因为这样会阻止显示任何新消息


在显示属性后更新它似乎是一个相当合理的要求,但我一直在寻找如何实现它的想法。有什么建议吗?

在从服务器返回阵列时复制阵列。查看项目时,在原始数组中更新查看=true,执行AJAX请求以更新服务器上的消息,但使用副本上的查看来确定要显示哪些消息。

与其使用布尔值来表示查看的消息,不如将其设为整数,一旦符合显示条件,该值就会递增。模板应仅在查看时呈现它
==1