1

使用块参数,我认为以下内容可以将组件公开给嵌套控件,而无需_yieldhack。

{{#my-component as |myparam|}}
    {{log myparam}}
{{/my-component}}

这似乎不起作用,因为此日志返回未定义。

我正在使用ember-cli 0.1.15 ember 1.10.0ember-cli-htmlbars 0.7.4。我需要做些什么来启用块参数,还是这不是正确的表示法?

更新

例如,考虑一个带有幻灯片和控制按钮的灵活轮播。

{{#carousel-component as |carousel|}}
    {{#slide-component}}
      <button {{action "nextSlide" target=carousel}}>Next</button>
    {{/slide}}
{{/carousel-component}}

具体来说,这是尝试严格使用block paramsEmber 1.10 中可用的新语法来解决这个用例。

4

2 回答 2

2

根据http://emberjs.com/blog/2015/02/07/ember-1-10-0-released.html,看起来新语法需要通过组件的yield帮助程序传递的块参数。我制作了一个 JSBin 来说明:

http://emberjs.jsbin.com/jacosewefu/4/edit

于 2015-02-17T20:01:04.463 回答
1

将整个组件作为块参数传递符合隔离原则,因此除非有特殊原因,否则请改为传递特定参数。

将此用作组件的模板:

{{yield context}}

然后,当你写:

{{#carousel-component as |carousel|}}
    {{#slide-component}}
      <button {{action "nextSlide" target=carousel}}>Next</button>
    {{/slide}}
{{/carousel-component}}

更多关于块参数:
http ://emberjs.com/blog/2015/02/07/ember-1-10-0-released.html#toc_block-params

于 2015-03-25T14:09:30.780 回答