2

我有一个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绑定包括回调afterAddbeforeRemove回调,这在视觉上搞砸了。每当我点击刷新按钮时,整个列表都会淡出,而新列表会淡入。

有没有办法刷新该数组以仅向其中添加新值并保留现有值?

4

1 回答 1

2

您可以使用ko.mapping并指定该key属性来定义剔除应如何检测现有项目的更新与新项目的添加。

看看ko.mapping.fromJS文档是如何定义key属性的。

于 2013-08-30T14:08:38.760 回答