如何从ID获取模型?

时间:2013-08-02 17:45:56

标签: javascript backbone.js

帮帮我。 如何从ID获取模型?

var Sidebar = Backbone.Model.extend({});
var sidebar = new Sidebar;
var Library = Backbone.Collection.extend({})
lib=new Library();

lib.add(sidebar,{at: 234});

console.log(lib.get(234))//undefined ..Why??

2 个答案:

答案 0 :(得分:4)

您似乎混合了idindex,这些不可互换。

要按id检索,您需要使用Model进行设置:

var sidebar = new Sidebar({ id: 234 });

// ...

console.log(lib.get(234));

index是集合中的展示位置:

lib.add(sidebar, { at: 0 });

console.log(lib.at(0));     // sidebar
console.log(lib.models);    // Array: [ sidebar ]
console.log(lib.models[0]); // sidebar

答案 1 :(得分:0)

试试这个

var Sidebar = Backbone.Model.extend({
     // Need to set this. Otherwise the model
     // does not know what propert is it's id
     idAttribute : 'at'
});
var sidebar = new Sidebar();
var Library = Backbone.Collection.extend({})
var lib=new Library();

// Set the Model
sidebar.set({at:234});

// Add it to the collection
lib.add(sidebar);

console.log(lib.get(234))

<强> Check Fiddle

您添加集合will be spliced at that index的方式以及在该索引处插入的模型。我不认为那不是你想要的。因此,您需要先将属性设置为模型,然后将其添加到集合中。