簡體   English   中英

EmberJS 1.13.3 /組件/塊模板/訪問組件屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM