backbone.js解析1个元素(Id)

时间:2011-07-06 17:35:02

标签: javascript json backbone.js

对于骨干模型中的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类型。

3 个答案:

答案 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;