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