灰烬数据和对象图

时间:2013-03-31 16:08:40

标签: ember.js ember-data

我是 emberjs 的新手,但很高兴进入并玩转。我正在努力的一件事是......你能加载一个对象图形深度超过1的JSON对象。我的意思是将模型设置为一系列名称/值对似乎相对简单其中值是一个简单的类型(字符串,整数,日期等),但如果它是一个对象呢?

我想它可能连接到关系模型但是从我在文档中看到的这只允许FK-> PK关系而不是内联对象。我可能正在解释我的意思,所以让我举个例子:

假设我在端点为http://my.url.com/place/[place_id]进行REST调用,并且GET调用返回:

{
    place: {
        name: "string",
        desc: "string",
        location: {
            longitude: float,
            latitude: float,
            radius: int
        }
}

在上面的例子中,我很难理解如何建模location。任何有关如何扩展这一点的帮助将不胜感激:

App.Place = DS.Model.extend({
    name: "string",
    desc: "string",
    location: "?????"
});

1 个答案:

答案 0 :(得分:1)

您可以引入新的数据转换来处理原始JSON。

DS.RESTAdapter.registerTransform('raw', {
    deserialize: function(serialized) {
        return serialized;
    },  
    serialize: function(deserialized) {
        return deserialized;
    }   
});

现在,您使用raw作为location的数据类型来定义您的模型。

App.Place = DS.Model.extend({
    name: DS.attr('string'),
    desc: DS.attr('string'),
    location: DS.attr('raw')
});

如果您的服务器数据格式为

place: {
    id: 'place',
    name: 'foo',
    desc: 'bar',
    location: {
        longitude: 1,
        latitude: 2,
        radius: 3
    }
}

然后您可以绑定到模板中的location.longitude等。以下是a jsfiddle中充实的内容。