0

我有一个收藏:

var initializeUpfrontCost = function () {
    Entities.upfrontCost = new Entities.UpfrontCostCollection([
        { id: 'upfrontcost', name: 'upfrontcost', value: 0},
        { id: 'upfrontcostquote', name: 'upfrontcostquote', value: 0}


    ]);
};

我只想更新一行(模型)。我有:

   Entities.upfrontCost.set({id: 'upfrontcostquote', value:  "somevalue"});

但这似乎删除了另一行。(触发删除事件)。

如何仅更新我的收藏中的这一行?

谢谢

——贾斯汀·威利

4

2 回答 2

1

您需要add({row}, {index: n})在集合中插入一行(或者add({row})如果您不关心新行的位置),但您必须知道要删除哪一行,因此您可以调用remove({oldrow}).

您可以使用;找出add调用的索引。_.indexOf(collection, {row})

如果 add&row 不够好,那么你必须更新集合中的对象而不是替换它。

链接:

http://underscorejs.org/#indexOf

http://backbonejs.org/#Collection-add

于 2013-07-04T17:53:32.413 回答
1

查看文档_collection.get(id)

您应该能够执行以下操作:

var entity = Entities.upfrontCost.get('upfrontcostquote');

//Returns a model which you can then modify
entity.set({
   value: "some value"
});

当您调用collection.set()原始代码时,它会将集合的值设置为您提供的新输入。相反,您想要做的是将个人Model从集合中拉出来并进行修改。

于 2013-07-04T19:44:58.580 回答