2013-04-04 210 views
2

我有以下json数据:建模嵌套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}} 

但我不知道这是行不通的。

+0

如果您有一个定义良好的属性模型belongsTo是要走的路。 – mbogh 2013-04-04 11:19:16

+0

那么'{{node.properties.age}}'是访问它的正确方法吗? – dangonfast 2013-04-04 11:40:43

回答

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') 
}); 

欲了解更多信息,请查看这些答案: