我在做什么:每 30 秒轮询一次远程日期源以获取数据。然后我做self.MyCollection(newData);
.
的问题:由于我可能已经过滤了数组或扩展了 UI 中的特定数组项,因此我不希望它每 30 秒重置一次。
我只想在项目实际更改时更新和重新渲染我的可观察数组。
任何人都知道如何避免在底层可观察数组更改时重置 UI - 或者 - 如何避免当只有 1 个或更少的底层项更改时整个可观察数组更改?
我不知道你到底想做什么,但官方的 knockoutjs 文档描述了一个类似的问题:http://knockoutjs.com/documentation/plugins-mapping.html
在第 Customizing object updating using “update”
节中:
您还可以通过指定 更新回调。它将接收它正在尝试更新的对象,并且 一个选项对象,与创建对象使用的选项对象相同 回调。
我通过简单地迭代 observableArray 中的项目并更改值(它们本身就是可观察量(来解决这个问题。这只更新了列表中的<li>
,而不是整个<ul>
。