我像这样从服务器获取了嵌套的 JSON 数据:
{
name: "Alice",
profile: {
something: "abc"
}
}
我有以下模型:
App.User = Ember.Object.extend({
name: null,
profile: Ember.Object.extend({
something: null
})
})
如果我简单地执行 App.User.create(attrs)
或 user.setProperties(attrs)
,profile
对象将被覆盖纯 JS 对象,所以目前我正在这样做:
var profileAttr = attrs.profile;
delete attrs.profile
user.setProperties(attrs); // or user = App.User.create(attrs);
user.get('profile').setProperties(profileAttrs);
它有效,但我在几个地方得到了它,在实际代码中我得到了不止一个嵌套对象,所以我想知道是否可以覆盖 User#create
和 User#setProperties
方法自动完成。也许有更好的方法?
最佳答案
根据您的评论,您想要模型获得的自动合并行为(您通过 .extend()
获得的那种东西)。在这种情况下,您可以尝试注册一个自定义转换器,例如:
App.ObjectTransform = DS.Transform.extend({
deserialize: function(json){
return Ember.Object.create(json);
}
});
App.User = DS.Model.extend({
profile: DS.attr('object')
});
参见:https://github.com/emberjs/data/blob/master/TRANSITION.md#json-transforms
关于javascript - 在 Ember 中创建和更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488086/