Javascript 主干集合通过it获取模型';身份证

Javascript 主干集合通过it获取模型';身份证,javascript,backbone.js,Javascript,Backbone.js,即使我在共同响应的模型中设置了idAttribute,我也无法通过ID获取单个模型 集合如下所示: [ { "_account": "51dc04dbe4e643043d000001", "name": "test.png", "type": "image/png", "_id": "51ff833f0342ee0000000001", "added": "2013-08-05T10:49:35.737Z"

即使我在共同响应的模型中设置了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

我不明白为什么,而来自的解决方案不是解决问题的关键。

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

var MyCollection = Backbone.Collection.extend({
  model: FileModel,
  ...
})
但是,根据JavaScript的布局方式(以及浏览器对JavaScript的评估方式),在读取
model:FileModel
语句时,可能仍然没有定义该语句。要解决这个问题,可以将属性的赋值移动到集合的initialize/constructor

比如说

var MyCollection = Backbone.Collection.extend({

        initialize: function () {
            this.model = FileModel;
        }
    ...
});

因为在您的示例中,您试图使用
\u帐户
而不是
\u id
哦,这只是一个类型错误。问题仍然存在您是否设置了集合的类型?是的,我喜欢这样…model:FileModel,根据JavaScript的布局,您可能需要在集合的initialize方法中设置模型,例如
this.model=FileModel