Emberjs-将父组件的引用传递给模板

时间:2016-11-10 11:04:02

标签: ember.js handlebars.js

我正在开发一个ember 1.13项目,我希望将父组件传递给* .hbs文件中的子组件,如下所示:

{{#parent}}
    {{child parent=<what here?>}}
{{/parent}}

我尝试使用{{#parent as |parent|}},但这不起作用。添加:

get parent(){ return this; }

组件定义也不起作用?我怎么能这样做?

修改

父母的模板如下:

<ul>
    {{yield}}
</ul>

如果我写:

<ul>
    {{child parent=this}}
    {{yield}}
</ul>

作品。

看来我在这里做错了什么,常规方式应该是什么?我可以让parent至少听取child ??

中的事件

编辑#2

如果我写:

<!-- not within the "parent" component's template -->
{{#parent}}
    {{child action=something}}
{{/parent}}

我收到错误,该操作未在包含组件中定义。将{{child action=something}}移动到parent's模板({{yield}}之前)它的工作原理。但我想将上面的代码包含在任何其他模板中,我该怎么做?

编辑#3

即使提供的答案更好更清晰,我也可以设法使用子组件的targetObject属性来运行它,如下所示:

targetObject: Em.computed.alias('parentView');

1 个答案:

答案 0 :(得分:1)

父母需要自我屈服:

<ul>
    {{yield this}}
</ul>

使用它时:

{{#parent as |p|}}
    {{child parent=p}}
{{/parent}}