Javascript KO/JS:只通过推送新值并保留现有值来刷新数组

Javascript KO/JS:只通过推送新值并保留现有值来刷新数组,javascript,arrays,knockout.js,Javascript,Arrays,Knockout.js,我有一个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)); }); }); 我还有一个刷新按钮连接到这个函数,

我有一个
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
回调,这在视觉上把事情搞得一团糟。每当我按下刷新按钮时,整个列表都会淡出,而新列表会淡入

是否有方法刷新该数组以仅向其添加新值并保留现有值?

您可以使用并指定
属性来定义敲除应如何检测正在更新的现有项与正在添加的新项


查看
ko.mapping.fromJS
以及文档如何定义
属性。

一旦我再次了解项目的这一部分并使其正常工作,我将接受您的答案。希望不要再等一年。:)@诺伯特:不用担心。如果有帮助的话,我不久前写了一篇简单的文章,我指的是做这种事情的。项目添加/删除/更新,但您可以看到(从时间戳)它们实际创建的时间。