我需要在位置Collection.length-2插入一个模型到一个集合。 集合中的最后一个模型应该永远留在集合中的最后一个模型。
我试过到目前为止:
我加了一个“页”模式向集“页”,然后试图通过改变其周围序列交换他们:
var insertedpage = Pages.at(Pages.length-1);
var lastpage = Pages.at(Pages.length-2);
insertedpage.set({sequence: Pages.length-1});
lastpage.set({sequence: Pages.length});
我也试图删除最后一个页面,然后添加一个新的页面,然后添加最后一页回。
var lastpage = Pages.pop();
Pages.add({example1: example2});
Pages.push(lastpage);
这些都不奏效。 新添加的页面仍显示在收藏作为最后一个模型。 我需要调用某种秩序的功能之后呢?
很抱歉的简短回答(没有时间做出反应),但看看定义一个比较函数。
http://backbonejs.org/#Collection-comparator
Backbone.Collection.add()
需要一个options
支持的对象at
指定的索引关键字。
通过{at: index}
指定在拼接模型进入收集index
。
例:
Pages.add({ foo: bar }, { at: Pages.length - 2 })
沿着相同的建议作为罗布Hruska的,使用Backbone.Collection.add()
与at
在options
对象。
Pages = new Backbone.Collection([
{id:1, foo:'bar'},
{id:2, foo:'barista'} /* Last model should remain last */
]);
/* Insert new "page" not at the end (default) but length minus 1 */
Pages.add({id:3, foo:'bartender'}, { at: Pages.length - 1 });
Pages.at(0).id === 1; // true
Pages.at(Pages.length - 2).id === 3; // true
Pages.at(Pages.length - 1).id === 2; // true
你提到Pages
似乎是由属性进行排序sequence
; 你碰巧有一个comparator
的Pages集合定义的函数?
另外一个问题,你要更新该属性sequence
上的所有现有页面车型目前在集合时,一个新的页面被添加到第二到最后一个位置? 或者是属性的尝试来完成你原来的问题?