EmberJs将名称更改为model中的belongsTo属性

时间:2015-10-18 15:57:50

标签: ember.js ember-data

我从Ember开始,我想知道是否可以这样做。

我的书的服务器型号:

Book = { 
    name: 'string',
    author_id: 'number' 
}

但在我的Ember方面,我想要有这样的东西:

Book = { 
    name: DS.attr('string'),
    author: DS.belongsTo('author' , {via: 'author_id'})
}

这可能吗?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。但是,您没有在关系上定义,您可以在序列化程序中实现转换行为。因此,不要告诉Ember您的服务器调用该关系的东西不同,您只需将关系转换为Ember想要的格式,然后再将其加载到商店中。

例如,如果您使用RESTSerializer,则可以覆盖keyForRelationship挂钩。

App.BookSerializer = DS.RESTSerializer.extend({
    keyForRelationship: function(key) {
        if (key === 'author') {
            return 'author_id';
        } else {
            return key;
        }
    }
});

这将告诉序列化程序从JSON中的author字段获取author_id关系的数据。它还可以确保在将JSON发送回服务器时,它会在序列化时将author关系转换回author_id属性。

如果您没有使用RESTSerializer,您可能会在Ember Data API documentation page上找到您正在使用的序列化器,而您的序列化器很可能采用相同的方法或非常类似的方法。