建模嵌套的json结构

时间:2013-04-04 10:56:52

标签: ember.js ember-data

我有以下json数据:

{
    "type": "type1",
    "name": "Name1",
    "properties": {
        "age": 23,
        "address": "Sample"
    }
}

我使用Ember Data对此进行建模,如下所示:

App.Node = DS.Model.extend({
    type: DS.attr('string'),
    name: DS.attr('string'),
    properties: DS.belongsTo('App.NodeProperties')
});

App.NodeProperties = DS.Model.extend({
    age: DS.attr('number'),
    address: DS.attr('string')
});

是否有更好的方法来模拟嵌套properties而不是使用DS.belongsTo? 我如何访问模板中的年龄。我正在做

{{node.properties.age}}

但我不确定这是否有效。

1 个答案:

答案 0 :(得分:4)

  

有没有比使用DS.belongsTo更好的方法来建模嵌套属性?

根据您的使用案例,DS.belongsTo是一个不错的选择。

  

我如何访问模板中的年龄?

假设{{node.properties.age}}是有效参考

{{node}}是对的

  

但我不确定这是否有效。

为了实现这一目标,您还需要采取一些步骤。首先,将App.Node的映射添加到其余适配器,指定将嵌入属性:

DS.RESTAdapter.map('App.Node', {
  properties: { embedded: 'always' }
};

然后更新NodeProperties以包含关系:

App.NodeProperties = DS.Model.extend({
  age: DS.attr('number'),
  address: DS.attr('string'),
  node: DS.belongsTo('App.Node')
});

有关详细信息,请查看以下答案: