Javascript 主干集合通过it获取模型';身份证
即使我在共同响应的模型中设置了idAttribute,我也无法通过ID获取单个模型 集合如下所示: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"
[
{
"_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代码>