Backbone - 为id使用不同的字段名称

Chi*_*hin 30 backbone.js

我正在移植一个旧应用程序以使用backbone.js(希望如此)问题是系统中的各种对象都没有使用'id'作为id - 每个对象都是不同的.阅读时,我在初始化Backbone.Model时想出了下面的解决方案.

   initialize: function(){
    this.idAttribute = 'user_ID';
    this.set({'id':this.get('user_ID')});
 }
Run Code Online (Sandbox Code Playgroud)

然而,我很担心,随着我开发骨干,这种方法会让我感到厌烦.有人对这个有经验么.任何指针都非常赞赏.

编辑:我刚刚在模型上调用isNew()并且得到了真实,即使id现在设置为1. ///////////////////////// //////////////////

使用以下似乎可以解决它.

User = Backbone.Model.extend({
idAttribute : 'user_ID'
Run Code Online (Sandbox Code Playgroud)

})

tim*_*ham 49

当您使用idAttribute时,backbone主要使id属性与user_ID属性保持同步.通常使用的方式是定义类时

var UserModel = Backbone.Model.extend({
    idAttribute: 'user_ID',
    initialize: function() {
        //do stuff
    }
});

var me = new UserModel({user_ID: 1234, name: 'Tim'});
console.log(me.id); //1234
console.log(me.get('user_ID')); //1234
console.log(me.isNew()); //false

var me2 = new UserModel({name: 'newUser'});
console.log(me2.isNew()); //true
Run Code Online (Sandbox Code Playgroud)

祝好运

  • 当我问自己问题时,我偶然发现了这个问题.如果在骨干项目的关系数据库模式中使用id-suffix,如"id_user"而不是"id".我确信根据[this](http://stackoverflow.com/a/1369773/2236166)使用它们会更好,然后我想"Doh,但骨干模型的id字段......",直到我阅读此问答.谢谢! (2认同)