2016-11-10 68 views
0

我的工作在余烬1.13项目中,我想通过父组件为它的子在* .hbs文件中像这样:Emberjs通参考孩子

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

我试图使用{{#parent as |parent|}}但这不起作用。增加:

get parent(){ return this; } 

给组件定义不起作用吗?我怎样才能做到这一点?

编辑

父模板的样子:

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

如果我写:

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

作品。

看来我在这里做错了什么,应该怎样规律?我是否可以让parent至少收听child的活动??

EDIT#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'); 
+0

'{{child parent = this}}'应该有效。但为什么你需要这个? – ykaragol

+0

我想用一个应该触发的回调来配置'child',如果点击。 – philipp

+0

那么,我宁愿将操作和数据交给子组件,而不是访问父组件。举个例子,[this](https://github.com/tubitak-bilgem-yte/ember-contextual-table/blob/master/addon/templates/dt-selection-column.hbs#L2)会产生一个动作,一些数据给儿童组件。 – ykaragol

回答

1

家长的需求产生自己:

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

而使用它:

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

谢谢你的工作!我同时我找到了另一个解决方案......它在更新中...... – philipp