我有一个从服务器获取模型的集合。
这很有效,现在我想通过MyCollection.at(0)
的ID来获取模型,然后我得到:
child
_changes: Array[0]
_changing: false
_currentAttributes: Object
_events: Object
_hasComputed: true
_pending: false
_previousAttributes: Object
attributes: Object
_id: "50ef7a63b2a53d17fe000001"
author_name: "author name"
bookmark: ""
info: "bookmark description"
__proto__: Object
changed: Object
cid: "c26"
collection: child
view: child
__proto__: Surrogate
如果我尝试通过其ID获取模型,我会得到:
MyCollection.get("50ef7a63b2a53d17fe000001")
=> undefined
MyColleciton.get({_id:"50ef7a63b2a53d17fe000001"})
=> undefined
MyCollection.get({'_id':"50ef7a63b2a53d17fe000001"})
=> undefined
我不明白 - 文档清楚地说明如果该集合中存在具有给定id的模型,.get()
方法将返回模型。
答案 0 :(得分:20)
您是否在模型上设置了Model.idAttribute
?
var Model = Backbone.Model.extend({
idAttribute:"_id"
});
默认情况下,Backbone期望id属性被称为id。设置idAttribute
后,Backbone会标准化id的处理,以便model.id
始终可用,即使id属性被调用。原始id属性在Model的attributes
哈希中可用,因此可以通过get
methd获得。所以:
model.id === model.get('_id') // -> true
答案 1 :(得分:3)
您可以使用模型的cid
(客户端ID)属性作为MyCollection.get()
的参数,该参数保证在创建时存在。文档似乎认为可行,请参阅http://backbonejs.org/#Collection-get。