使用id属性设置模型ID

时间:2014-02-23 02:51:43

标签: backbone.js model attributes

http://documentcloud.github.io/backbone/#Model-id表示id的{​​{1}}属性很特殊,因为如果调用modelmy_model.set("id", <new_id>)将具有该新值。但是,这个属性不是可交换的。致电my_model.id后跟my_model.id = 4将不会产生4。

有没有办法让my_model.get("id")设置my_model.id=4的值,以便my_model.attributes.id会产生4?

2 个答案:

答案 0 :(得分:1)

要实现你想要的,你可以覆盖Backbone.Model的get方法,但这不是一个很好的命题,因为有一个原因,为什么属性的模型id和id属性是相互分离的,模型的id是骨干本地的东西,属性的id属性是同步模型时远程服务器可能使用的东西。

因此,在通常情况下,覆盖Model的get函数可能会在将来引发麻烦。

答案 1 :(得分:0)

你可以达到你想要的效果:

Backbone.Model.prototype.get = function(attr) {
    if (attr == 'id' && this.attributes[attr] != this.id) {
        this.attributes[attr] = this.id;
    }
    return this.attributes[attr];
};