在Ember Handlebars中使用嵌套的每个块时的上下文绑定

时间:2012-12-01 11:37:32

标签: html ember.js handlebars.js templating

我只是偶然发现了emberJS,并认为值得为我的下一个网络应用程序试用它。

我实际打算做的是以二维方式显示对象列表(atm这可以是一个表格)。

到目前为止我所拥有的:

<script type="text/x-handlebars">
<table width="100%" style="text-align:left">
  <tr>
    <th>
    </th>
    {{#each App.MyController.getColumnValues}}
      <th>{{this}}</th>
    {{/each}}
  </tr>
  {{#each App.MyController.getRowValues}}
    <tr>
      <th>{{this}}</th>
      {{#each App.MyController.getColumnValues}}
        {{view App.CountView rowBinding="this" columnBinding="../this"}}
      {{/each}}
    </tr>
  {{/each}}
</table>
</script>

和countView:

<script type="text/x-handlebars" data-template-name="countView">
  <td>{{view.row}} - {{view.column}}</td>
</script>

正如您所看到的,我想要一个表,在每个单元格中包含当前列AND行的值。 除了columnBinding之外,一切正常。正如我在Handlebars的页面上读到的那样{{../this}}是解决父模板范围的方法。在两个花括号中(没有为它创建额外的视图,这非常好用。 但是我后来需要调用一个函数来传递它的列和行值并想到(为了清楚)一个视图在这一点上会很好。

如何访问父模板范围并将其传递给countView?

1 个答案:

答案 0 :(得分:2)

为了避免混淆,您可以始终在{{each}}块中使用变量,就像在这种情况下一样,您可以尝试这种方式:

{{#each row in App.MyController.getRowValues}}
  <tr>
    <th>{{row}}</th>
    {{#each column in App.MyController.getColumnValues}}
      {{view App.CountView rowBinding="row" columnBinding="column"}}
    {{/each}}
  </tr>
{{/each}}

如果这有帮助,请告诉我......