如何访问模板Handlebars&中的对象内的数组Ember.js

时间:2014-02-12 17:11:02

标签: ember.js ember-data handlebars.js

我正在尝试使用ember.js在手柄模板中访问以下JSON的“name”属性,但似乎无法使其工作。

我将模型扩展如下:

    App.Post = DS.Model.extend({
      taxonomies : DS.attr();     
});

我的JSON看起来像这样:

{"taxonomies":{
    "positions":[
     {
        "name":"F",
     }
  ],
  "nhlteams":[
     {
        "name":"MTL",
     }
  ]
}}

在模板中:

<script type="text/x-handlebars" data-template-name="posts">
    <h1>Position Name: {{taxonomies.positions.0.name}}</h1>
    <h1>Team Name: {{taxonomies.nhlteams.0.name}}</h1>
</script> 

我也试过了:

<script type="text/x-handlebars" data-template-name="posts">
    <h1>Position Name: {{taxonomies.positions.name}}</h1>
    <h1>Team Name: {{taxonomies.nhlteams.name}}</h1>
</script> 

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要在hasManytaxonimies等之间建立positions关系

App.Post = DS.Model.extend({
  taxonomy: DS.belongsTo('taxonomy');     
});

App.Taxonomy = DS.Model.extend({
  positions : DS.hasMany('position');     
});

App.Position = DS.Model.extend({
  name: DS.attr()
});

然后你的json需要采用这种格式

{
  post:{
   taxonomy:1
  },
  taxonimies:[
    {
      id:1,
      positions:[1]
    }
  ],
  positions:[
    {
      id:1,
      name:"F"
    }
  ]
}

要查看有关ember数据预期json的更多信息,请参阅https://github.com/emberjs/data/blob/master/TRANSITION.md