Backbonejs - 使用嵌套对象作为id属性

时间:2013-06-18 07:23:23

标签: javascript backbone.js javascript-objects

是否可以在Backbone中使用嵌套对象作为id属性?

例如像,

var MyModel = Backbone.Model.extend({
        defaults : {
            'info': {
                'name': ""
            },
        },
        idAttribute: "info.name"
}
顺便说一下,上面的内容不能作为ID使用,我在这里添加它只是为了让我知道我想要实现的目标。

TIA

2 个答案:

答案 0 :(得分:4)

我认为您不能直接将嵌套对象指定为idAttribute

但是,当parse方法中服务器提供响应时,您可以直接在模型上设置ID

parse: function(response) {
   response.id = response.info.name;
   return response;
}

答案 1 :(得分:0)

正如@Sushanth所说,parse肯定是一个很好的方法。

但通常在Backbone Models中使用嵌套对象是不安全的,并不是最好的方法。当您更改response.info.name属性,并将事件绑定到response.info时,您将不会收到通知。

使用Backbone几年后,我想告诉您,将您收到的模型从服务器解析为原始对象是您可以做的最好的事情。

如果您希望模型以完全相同的方式返回服务器,则可以覆盖toJSON函数,该函数可以将其转换回来。当然,你需要实现这两个......:/