13

对于尚未保存到服务器的模型,我可以使用 Collection.get(id) 在 cid 的 Backbone.js 集合中查找模型吗?

从文档来看,.get 似乎应该通过它的 id 或 cid 找到一个模型。但是,collection.get(cid)没有找到模型,而这确实找到了collection.find(function(model) {return model.cid===cid; }). 大概我忽略了一些基本的东西。

jsFiddle 例如下面

var Element = Backbone.Model.extend({});
var Elements = Backbone.Collection.extend({ model:  Element });

var elements = new Elements(), el, cids = [];

for (var i=0; i<4; i++) {
    el = new Element({name: "element"+i})
    elements.add(el);
    cids.push(el.cid);
}

console.log(cids);
el1 = elements.get(cids[0]);     
console.log(el1);  // undefined


el1a = elements.find(function(model) { return model.cid === cids[0]; });
console.log(el1a);  // success

Backbone.js - id vs idAttribute vs cid

4

1 回答 1

24

在主干 0.9.9(参见变更日志)中,他们删除了该.getByCid()方法并将该功能直接折叠到.get()- 如果您使用低于 0.9.9,您可以使用该.getByCid()方法;我认为他们已经从文档中删除了它以反映图书馆的最新状态。

编辑:

See @Ferdinand Prantl's comment below for more detail, but passing the cid as the property of an object literal will accomplish what you're looking for here: .get({ cid: "xxx" }). My apologies for any confusion.

于 2013-01-25T15:55:34.723 回答