[Ember.js]将模板助手创建的模板助手作为组件的属性传递,以便在组件模板中使用它?

时间:2017-04-28 13:02:44

标签: javascript templates ember.js ember-paper

我正在使用paper-data-table,这是ember-paper的扩展。 两者都使用了我之前没有看到的技术,我将其描述为“模板助手创建模板助手”。

以下是余烬纸工具栏组件的简单示例

{{#paper-toolbar as |toolbar|}}
 {{#toolbar.tools}}
   {{#paper-button}}
     Go Back
   {{/paper-button}}
   <h2>Toolbar with Standard Buttons</h2>
   <span class="flex"></span>
   {{#paper-button raised=true}}
     Learn More
   {{/paper-button}}
   {{#paper-button mini=true aria-label="Favorite"}}
    {{paper-icon "favorite"}}
   {{/paper-button}}
 {{/toolbar.tools}}
{{/paper-toolbar}}

创建了一个新的模板助手{{#paper-toolbar as |toolbar|}}。 在我的用例中,我想将由paper-data-table模板助手(/ component?)创建的行模板助手传递给另一个组件,以将逻辑封装在其中。

我试图将其作为一个论点传递下去:

{{#paper-data-table
   sortProp='sort'
   sortDir='asc'
   as |table|
}}
   {{#table.body as |body|}}
      {{#each questions as |question index|}}
          {{question-row
              row=body.row
          }}
      {{/each}}
  {{/table.body}}
{{/paper-data-table}}

但是当试图在question-row组件的模板中使用帮助器(/ component)时

{{#row as |row|}}{{/row}}

我收到以下错误:

Assertion Failed: A component or helper named "row" could not be found Error

所以我想问一下这是否可能,以及它是如何起作用的。

1 个答案:

答案 0 :(得分:0)

此方法称为上下文组件,我可以使用以下代码在我的问题行组件中解决它:

{{#component row as |row|}}
    {{#row.cell}}
       HALLO
    {{/row.cell}}
{{/component}}