是否可以在Backbone中使用嵌套对象作为id属性?
例如像,
var MyModel = Backbone.Model.extend({
defaults : {
'info': {
'name': ""
},
},
idAttribute: "info.name"
}
顺便说一下,上面的内容不能作为ID使用,我在这里添加它只是为了让我知道我想要实现的目标。
TIA
答案 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函数,该函数可以将其转换回来。当然,你需要实现这两个......:/