无法在handlebarjs模板中访问模型对象的多个节点

时间:2013-09-02 13:18:33

标签: ember.js handlebars.js

我已发布了我的代码here

这里我试图访问灯具内部节点的数据,但它不工作,它显示空白结果。 模板代码:

<ul>
{{#each item in model}}
    {{#each item in item.list}}
        {{#each item in item.contents}}
            <li>{{item.product_name}}</li>
        {{/each}}
    {{/each}}
{{/each}}
</ul>

有谁能告诉我如何使用每个助手访问模板中对象内部节点的数据?

我已更新了我的代码here。 在这里,我得到home_products的第一个节点的数据,即

    "contents": [
        {
            "id": "1",
            "product_name": "abc11"
        },
        {
            "id": "2",
            "product_name": "abc12"
        }
    ]

无法获取第二个节点的数据,即

    "contents": [
        {
            "id": "1",
            "product_name": "abc21"
        },
        {
            "id": "2",
            "product_name": "abc22"
        }
    ]

每次我获得相同的数据,即第一个节点的数据。 任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您需要将模板名称更改为index,以匹配model挂钩返回数据的路径:

// that route belongs to index template
Astcart.IndexRoute = Ember.Route.extend({
  model: function() {
    return Astcart.Application.find();
  }
});

只需将模板更改为:

<script type="text/x-handlebars" data-template-name="index">

并将Astcart.Contents的映射更改为product_name而不是name。要与你的灯具匹配:

Astcart.Contents = Ember.Model.extend({
  product_name: Ember.attr()
}); 

灯具:

...
"contents": [
  {
    "product_name": "abc",
  },
  {
    "product_name": "pqr",
  }            
]
...

工作示例http://jsfiddle.net/marciojunior/NKTcc/