0

即使我在对应的模型中设置了 idAttribute,我也无法通过其 ID 获取单个模型。

一个集合看起来像这样:

[
    {
        "_account": "51dc04dbe4e643043d000001",
        "name": "test.png",
        "type": "image/png",
        "_id": "51ff833f0342ee0000000001",
        "added": "2013-08-05T10:49:35.737Z"
    }
]

// Inside the Model I defined idAttribute
FileModel = Backbone.Model.extend({

idAttribute : "_id",
urlRoot : "/api/file"

[...]

}
// The collection contain each of the Model items
// but if I try to get a single model item  by id:

Collection.get("51ff833f0342ee0000000001") -> the result is undefined

我不知道为什么,Backbone.Collection get model by id的解决方案不是解决问题的关键。

4

1 回答 1

1

为了通过自定义 id检索模型,您需要在模型上指定它的idAttribute并且您需要指定集合的​​模型属性以使用您的模型。通常,在您声明它的属性的集合中设置它就足够了

var MyCollection = Backbone.Collection.extend({
  model: FileModel,
  ...
})

但是,根据您的 JavaScript 布局方式(以及浏览器评估 JavaScript 的方式),可能在model: FileModel读取语句时它仍然未定义。为了解决这个问题,您可以将属性分配移动到集合的初始化/构造函数中。

例如

var MyCollection = Backbone.Collection.extend({

        initialize: function () {
            this.model = FileModel;
        }
    ...
});
于 2013-08-05T14:20:07.563 回答