我有一个集合,collection.models
返回一个模型数组。但是,当我调用collection.get(someId)
(并且此 id 是collection.models
数组中模型的 id)时,我得到undefined
. 看着collection._byId
,它看起来像一个空物体。
如何正确填充_byId
,以便我可以使用get
?或者也许我在初始化我的集合时做错了什么,这就是为什么_byId
是空的。
我有一个集合,collection.models
返回一个模型数组。但是,当我调用collection.get(someId)
(并且此 id 是collection.models
数组中模型的 id)时,我得到undefined
. 看着collection._byId
,它看起来像一个空物体。
如何正确填充_byId
,以便我可以使用get
?或者也许我在初始化我的集合时做错了什么,这就是为什么_byId
是空的。
我有点晚了,但希望这对其他人仍然有用。
Collection._byId 只是一个普通的 js 哈希对象。真的没什么好看的。如果您希望 Collection.get 工作,只需将所有模型添加到 _byId 哈希中。
在集合范围内:
var someId = '123'; // any id will do
this._byId[someId] = someModel; // someModel.id = '123'
console.log(!!this.get(someId)); // should return true
由于我在 Rails 中使用它,Rails 生成的默认 json 不适用于 Backbone。我不知道为什么我在尝试学习 Backbone 时没有看到它。无论如何,您可以:
听起来 OP 的问题略有不同,但我遇到了类似的问题,并认为我会发布对我有用的内容。
与原始问题一样,collection.models
包含正确的模型,但在我的情况下,_byId
哈希包含cid
的模型版本不为空。然而,_byId
没有包含具有正常 id 的模型(通常有两个版本 -id
一个和cid
一个),所以我无法使用collection.get(id)
它来检索它。当我阅读有关cid
. 从文档:
当模型尚未保存到服务器并且还没有最终的真实 id 但已经需要在 UI 中可见时,客户端 id 很方便。
我认为等待服务器作为我的cid
模型并且collection.model
具有正确的 ID 不是问题。{ wait : true }
然而,作为一个选项传入collection.create
为我解决了这个问题。