2016-11-10 72 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