2

我有一个集合,collection.models返回一个模型数组。但是,当我调用collection.get(someId)(并且此 id 是collection.models数组中模型的 id)时,我得到undefined. 看着collection._byId,它看起来像一个空物体。

如何正确填充_byId,以便我可以使用get?或者也许我在初始化我的集合时做错了什么,这就是为什么_byId是空的。

4

3 回答 3

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
于 2013-02-12T16:52:24.200 回答
0

由于我在 Rails 中使用它,Rails 生成的默认 json 不适用于 Backbone。我不知道为什么我在尝试学习 Backbone 时没有看到它。无论如何,您可以:

  1. 改变 Rails 生成 JSON 的方式
  2. 更改 Backbone 应用程序读取 JSON 的方式
于 2012-04-08T02:43:23.697 回答
0

听起来 OP 的问题略有不同,但我遇到了类似的问题,并认为我会发布对我有用的内容。

与原始问题一样,collection.models包含正确的模型,但在我的情况下,_byId哈希包含cid的模型版本不为空。然而,_byId没有包含具有正常 id 的模型(通常有两个版本 -id一个和cid一个),所以我无法使用collection.get(id)它来检索它。当我阅读有关cid. 从文档:

当模型尚未保存到服务器并且还没有最终的真实 id 但已经需要在 UI 中可见时,客户端 id 很方便。

我认为等待服务器作为我的cid模型并且collection.model具有正确的 ID 不是问题。{ wait : true }然而,作为一个选项传入collection.create为我解决了这个问题。

于 2017-10-03T19:44:16.890 回答