如何填充Backbone.js集合';s_byId数组,这样我就可以在上面使用'get'?
我有一个集合,如何填充Backbone.js集合';s_byId数组,这样我就可以在上面使用'get'?,backbone.js,Backbone.js,我有一个集合,集合.models返回一个模型数组。但是,当我调用collection.get(someId)(这个id是collection.models数组中的模型的id)时,我得到了未定义的。查看集合。\u byId,它看起来像一个空对象 如何正确填充\u byId,以便使用get?或者我在初始化我的集合时出错了,这就是为什么\u byId是空的。因为我在Rails中使用它,Rails生成的默认json在主干上不起作用。我不知道为什么我在努力学习时没有看到它。无论如何,你可以: 更改Rail
集合.models
返回一个模型数组。但是,当我调用collection.get(someId)
(这个id是collection.models
数组中的模型的id)时,我得到了未定义的
。查看集合。\u byId
,它看起来像一个空对象
如何正确填充
\u byId
,以便使用get
?或者我在初始化我的集合时出错了,这就是为什么\u byId
是空的。因为我在Rails中使用它,Rails生成的默认json在主干上不起作用。我不知道为什么我在努力学习时没有看到它。无论如何,你可以:
我有点晚了,但希望这对其他人仍然有用 集合。_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
听起来OP有一个稍微不同的问题,但我经历了一个类似的问题,我想我应该发布对我有用的东西 与原始版本一样,
collection.models
包含正确的模型,但在我的例子中,\u byId
散列包含的模型版本不是空的。然而,\u byId
不包含具有正常id的模型(通常有两个版本-一个id
1和一个cid
1),因此我无法使用collection.get(id)
检索它。当我读到cid
时,我的问题变得更清楚了。从文档中:
当模型尚未保存到服务器,并且没有最终的真实id,但需要在UI中可见时,客户机id非常方便
我认为等待服务器不是问题,因为我的
cid
型号和集合。型号
具有正确的ID。但是,将{wait:true}
作为集合中的一个选项传入。create
为我解决了这个问题。如何初始化集合?我遵循了初始化部分的。我使用的是类似json(将大多数属性精简为简洁)。我在创建控制器类时将其传递给它:controller=newmycontroller(jsonYouSeeAbove)
。也许JSON是错的?我明白我的问题了。我使用的to_json
方法没有返回正确的json序列。我应该返回一个哈希数组,如gist中哈希中的“model”值。