首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将模型插入特定索引中的backbone.js集合?

如何将模型插入特定索引中的backbone.js集合?
EN

Stack Overflow用户
提问于 2012-04-18 00:20:50
回答 2查看 20K关注 0票数 18

我需要将一个模型插入到位置为Collection.length-2的Collection中。集合中的最后一个模型应该始终保持在集合中的最后一个模型。

到目前为止,我尝试了以下内容:

我将一个“页面”模型添加到集合“页面”中,然后尝试通过更改它们的顺序来交换它们:

代码语言:javascript
复制
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});

我还尝试删除最后一个页面,然后添加一个新页面,然后再添加最后一个页面。

代码语言:javascript
复制
var lastpage =  Pages.pop();
Pages.add({example1: example2});
Pages.push(lastpage);

这两种方法都不起作用。新添加的页面仍显示为集合中的最后一个模型。在此之后,我是否需要调用某种order函数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-18 02:18:18

很抱歉回答得很简短(没有时间回答),但请看一下如何定义一个比较函数。

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

票数 3
EN

Stack Overflow用户

发布于 2012-04-18 14:07:43

按照与Rob Hruska相同的建议,在options对象中结合使用Backbone.Collection.add()at

代码语言:javascript
复制
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排序的;您是否碰巧在Pages集合上定义了comparator函数?

另一个问题是,当新页面添加到倒数第二个位置时,您是否希望在集合中的所有现有页面模型上更新此属性sequence?或者这个属性是为了完成你最初的问题?

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10195102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档