从数据源获取时,仅更新observableArray中已更改的项目

时间:2012-05-18 07:12:13

标签: knockout.js polling knockout-2.0

我正在做什么:每隔30秒轮询一次远程数据源。 然后我做self.MyCollection(newData);

我的问题:因为我可能已经过滤了数组或扩展了UI中的特定数组项,所以我不希望它每30秒重置一次。

我只想在项目实际更改时更新并重新渲染我的observableArray。

当基础observableArray发生变化时,任何人都知道如何避免重置ui - 或者 - 当只有1个或更少的基础项发生变化时,如何避免整个observableArray发生变化?

2 个答案:

答案 0 :(得分:1)

我不知道你想要做什么,但官方的knockoutjs文档描述了一个类似的问题:http://knockoutjs.com/documentation/plugins-mapping.html

Customizing object updating using “update”部分:

  

您还可以通过指定来自定义对象的更新方式   更新回调。它将收到它正在尝试更新的对象   一个options对象,与create使用的对象相同   回调。

答案 1 :(得分:0)

我通过简单地迭代observableArray中的项并解决了这些值(它们本身就是可观察的)来解决这个问题。这更新了列表中的<li>,而不是整个<ul>