[英]EmberJS 1.13.3 / Component / Block template / access component property
我正在使用Ember 1.13.3(最新版本為2015-07-16)。
我有這樣定義的組件:
import Ember from 'ember';
export default Ember.Component.extend({
tagName: 'li',
yow: 'argh',
});
它對應的hbs很簡單(默認):
{{yield}}
我以這種方式使用組件(在我的application.hbs中):
{{#side-menuitem name='medium' current=selectedMenuItem clicked='menuItemSelected'}}
{{#link-to name}}Hey you ... {{yow}}{{/link-to}}
{{/side-menuitem}}
我希望能看到帶有標簽的鏈接:嘿,你好。 但是我明白了:嘿,您...(沒有聲音)。
這里有一個類似的線程:在模板塊中訪問組件范圍
我也嘗試過:{{view.yow}}和{{component.yow}},不走運。 看起來Ember 1.13(仍)具有此行為:塊格式專門使您脫離組件范圍並進入父范圍,由於隔離級別,從父范圍到組件沒有任何可用鏈接。
這是不希望的……,我以某種方式認為行為已在1.13中進行了更改(與2.0兼容),但我沒有看到(或我認為錯了嗎?)。
如何解決這個問題而又不弄亂(父)控制器?
謝謝,拉卡
這應該可行,只需將模板更改為:
// application.hbs
{{#side-menuitem name='medium' current=selectedMenuItem clicked='menuItemSelected' as |yow|}}
{{#link-to name}}Hey you ... {{yow}}{{/link-to}}
{{/side-menuitem}}
// component.hbs
{{yield yow}}
您可以回答您自己的問題,這就是塊組件的工作方式。 如果您的需要允許您以非阻塞形式使用此組件,那么它將按照您想要的方式工作:
模板:
// side-menuitem.hbs
<li>
{{#link-to name}}Hey you ... {{yow}}{{/link-to}}
</li>
腳本:
// side-menuitem.js
import Ember from 'ember';
export default Ember.Component.extend({
yow: 'argh'
});
采用:
{{side-menuitem name='index' current=selectedMenuItem clicked='menuItemSelected'}}
如果確實需要將其保留下來,那么找到的另一篇文章中的建議就是解決的辦法(數據減少,行動起來)。 您可以使用sendAction
將值發送到父控制器,並在父控制器中sendAction
一個操作以捕獲它並根據需要對其進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.