Ember.js / Handlebars嵌套每次迭代

时间:2012-07-29 23:23:26

标签: ember.js handlebars.js

拥有应代表表格的视图,具有columnsrows

App.ListView = Ember.View.extend({
  templateName: 'list',
  columns: ['t1', 't2', 't3'],
  rows: [
    { t1: 'one', t2: 'two', t3: 'three' },
    { t1: 'two', t2: 'one', t3: 'seven' }
  ]
});

- 分别是模板:

<table>
<thead>
  <tr>
  {{#each columns}}
    <th>{{this}}</th>
  {{/each}}
  </tr>
</thead>
<tbody>
{{#each rows}}
  <tr>
  {{#each ../columns}}
    <td>does nothing: {{this}}</td>
  {{/each}}
  </tr>
{{/each}}
<tbody>
<table>

...也可以找到on jsfiddlejsfiddle.net/nWnf2

当嵌套在行中时,我显然不能迭代列。根本不会触发{{#each ../columns}}。这是为什么?什么是更好的方法?

1 个答案:

答案 0 :(得分:4)

Ember并不真正支持Handlebars的文件路径标识符。但是,您可以通过view.columns访问。

<table>
  <thead>
    <tr>
    {{#each columns}}
      <th>{{this}}</th>
    {{/each}}
    </tr>
  </thead>
  <tbody>
  {{#each rows}}
    <tr>
    {{#each view.columns}}
      <td>does nothing: {{this}}</td>
    {{/each}}
    </tr>
  {{/each}}
  <tbody>
<table>

http://jsfiddle.net/L7MAp/

查看您的代码段,我建议您使用{{#collection}}代替{{#each}},它不会缓解该问题但会使您的代码更清晰(IMO)。