【问题标题】:Backbone - using a different field name for idBackbone - 为 id 使用不同的字段名称
【发布时间】:2011-11-04 09:33:43
【问题描述】:

我正在移植一个旧应用程序以使用主干.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'

})

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    当您使用 idAttribute 时,主干基本上使 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
    

    祝你好运

    【讨论】:

    • 当我问自己这个问题时,我偶然发现了这个问题,如果我的骨干项目的关系数据库模式中应该使用像“id_user”这样的 id-suffixes 而不是“id”。我确信最好根据 this 使用它们,然后我想“Doh,但是骨干模型的 id 字段......”,直到我阅读了这个问答。谢谢!
    • 有点明显但不要使用 .get('id') 除非你想要原始的 id 值(如果你有的话)。始终使用“model.id”。
    猜你喜欢
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2013-06-17
    • 2021-03-20
    • 2015-03-24
    相关资源
    最近更新 更多