我有一个集合,collection.models
返回一个模型数组。但是,当我调用collection.get(someId)
(并且此id是collection.models
数组中模型的ID)时,我得到undefined
。查看collection._byId
,它看起来像一个空对象。
如何正确填充_byId
,以便我可以使用get
?或许我在初始化我的集合时做错了,这就是_byId
为空的原因。
答案 0 :(得分:3)
我有点晚了,但希望这对其他人来说仍然有用。
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
答案 1 :(得分:0)
由于我在Rails中使用它,因此Rails生成的默认json与Backbone不兼容。我不知道为什么在尝试学习Backbone时我没有看到它。无论如何,你可以:
答案 2 :(得分:0)
听起来OP有一个稍微不同的问题,但我遇到了类似的问题,并且认为我发布了对我有用的内容。
与原始问题一样,collection.models
包含正确的模型,但在我的情况下,_byId
哈希包含模型的cid
版本,并非空。尽管如此,_byId
并未包含具有正常ID的模型(通常有两个版本 - id
一个和cid
一个),所以我不是&#39 ;能够使用collection.get(id)
来检索它。当我读到cid
时,我的问题变得更加清晰了。来自文档:
当模型尚未保存到服务器时,客户端ID很方便,并且还没有最终的真实ID,但已经需要在UI中显示。
我认为等待服务器作为我的cid
模型并且collection.model
具有正确的ID是一个问题。但是,在{ wait : true }
中传递collection.create
选项可以解决此问题。