我有一个getTasks
函数,它返回一个任务列表:
$.getJSON("http://todo/actions/", function(data) {
self.tasks([]); // empty before refresh
ko.utils.arrayMap(data, function(task) {
return self.tasks.unshift(new Task.Model(task));
});
});
我还有一个连接到此功能的刷新按钮,用于刷新列表。但在我运行刷新按钮之前,我必须清空可观察数组,因此不会有任何重复。
这一切都很好,但在我的视图中,foreach
绑定包括afterAdd
和beforeRemove
回调,这会使视觉混乱。每当我点击刷新按钮时,整个列表都会在新列表淡入时淡出。
有没有办法刷新该数组只为其添加新值并保留现有值?
答案 0 :(得分:2)
您可以使用ko.mapping
并指定key
属性来定义淘汰赛如何检测正在更新的现有项目与正在添加的新项目。
查看ko.mapping.fromJS
以及文档如何定义key
属性。