Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干-为id使用不同的字段名_Backbone.js - Fatal编程技术网

Backbone.js 主干-为id使用不同的字段名

Backbone.js 主干-为id使用不同的字段名,backbone.js,Backbone.js,我正在移植一个旧的应用程序来使用backbone.js(希望如此) 问题是系统中的各种对象都没有使用“id”作为id- 每个对象都是不同的。通过阅读,我在初始化Backbone.Model时提出了以下解决方案 initialize: function(){ this.idAttribute = 'user_ID'; this.set({'id':this.get('user_ID')}); } 然而,我担心当我用脊梁骨发展时,这种方法会伤害我。 有没有人有这方面的经验。

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

   initialize: function(){
    this.idAttribute = 'user_ID';
    this.set({'id':this.get('user_ID')});
 }
然而,我担心当我用脊梁骨发展时,这种方法会伤害我。 有没有人有这方面的经验。 非常感谢任何指点

编辑:我刚刚在模型上调用了isNew(),得到了true,尽管id现在设置为1。 ///////////////////////////////////////////

使用下面的方法似乎可以解决问题

User = Backbone.Model.extend({
idAttribute : 'user_ID'

})

当您使用idAttribute时,主干基本上保持
id
属性与
user\u 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

好运

当我问自己是否应该在主干项目的关系数据库模式中使用id后缀,如“id_user”,而不是“id”时,我偶然发现了这一点。我确信最好根据使用它们,然后我想“Doh,但是主干模型的id字段…”,直到我读了这个问答。谢谢!有点明显,但不要使用.get('id'),除非您需要原始id值(如果您有)。始终使用“model.id”。