1

我有一个代表 N 张照片的骨干集合。最初,我收藏的 N 中照片很少(比如说 X)。

然后我的收藏从服务中获取所有 N 张照片。我可以用这些 N 重置我的收藏,但问题是,现有的 X 有一些额外的元数据,我不想丢失它。所以我想将这 N 张照片合并到我现有的收藏中。我怎么做?

我尝试使用 collection.add(N photos) ,但它的作用是保持 X 照片保持原样,然后在最后添加剩余的 (NX)。我想保持服务返回的 N 张照片的顺序,并将这些现有的照片合并到 N 张照片中。

4

1 回答 1

0

您应该能够为此使用该集合comparator

比较器 collection.comparator

默认情况下,集合没有比较器。如果您定义了一个比较器,它将用于按排序顺序维护集合。这意味着随着模型的添加,它们会被插入到collection.models.

因此,您需要做的就是在调用之前确保您的收藏有一个comparator知道事物顺序的东西。粗略而丑陋的概念证明如下所示:Nadd

// `incoming` is the new data, `c` is the collection.
for(var i = 0, rev = { }; i < incoming.length; ++i)
    rev[incoming[i].id] = i;
c.comparator = function(m) {
    return rev[m.id];
};
c.add(incoming);

一个真实的版本大概会包含在您的收藏中。

演示:http: //jsfiddle.net/ambiguous/dCZbv/

于 2013-03-12T03:53:47.533 回答