对于骨干模型中的id,它只是id
和所有较低的cased。如果我在服务器上的ID称为UserId
,该怎么办?在骨干的解析方法中,如何将UserId
更改为id
并为所有其他属性使用相同的名称?
例如。
window.User = Backbone.Model.extend({
defaults:
{
UserId: 0, // <--can i just tell backbone that this is my id?
Name: '',
Age: 0
}
parse: function(response){
var model = response;
model.id = response.UserId;
return model;
}
});
有更好的方法吗?
告诉骨干模型我的id是UserId
类型。
答案 0 :(得分:7)
您必须使用模型中的 idAttribute 说Backbone哪个属性是您的ID:
window.User = Backbone.Model.extend({
idAttribute: "UserId",
...
})
一切正常:)。 Backbone将为您创建id
属性,此模型的集合将get()
UserId
{。}}。
答案 1 :(得分:2)
这样做:
parse: function(response) {
var attrs = {};
attrs.id = response.UserId;
return attrs;
}
Parse有责任返回属性哈希,而不是模型。因此,您只需要将响应转换为属性哈希而不是模型。
答案 2 :(得分:0)
设置我会做的id,如mauromartini所说。要更改任何其他属性,您不需要创建任何私有变量,来自服务器的响应只是一个对象,因此操纵它并返回它。
window.User = Backbone.Model.extend({
defaults: { UserId: 0 },
parse: function(response){
response.id = response.UserId;
return response;
}
});
如果要保持模型清洁,还可以在返回对象之前添加以下内容:
delete response.UserId;