2017-02-17 17 views
5

İki bileşenli ve diğeri üzerinde bir tane var. Bunu yapmak için herhangi bir standart bir yolu yokturEmber bileşen rotanıza harekete geçin

enter image description here

bana bildirin (her iki bileşen aynı rotada kullanın) çocuk bileşeninden ana yol için bir etkinlik göndermek gerekir.

cevap

13

Kısa yanıt için ember-route-action-helper addon'u kullanabilirsiniz.

<button {{action (route-action 'onButtonClick')}}>ClickToCallRouteAction</button> 

yukarıdan aşağıya doğru bir dize olarak işlev adı geçen eylemler iletişimin üç yollu,

1. Eski stil klasik fonksiyonları tarzı yani. Vardır. ve her yerde aynı işlevi tanımlamak ve sağlamak için ihtiyacımız var. Kabarcıklamak için sendAction kullanın. ve denetleyiciden rota hiyerarşisine giden send yöntem balonu.

Bu teşvik edilmemektedir. Numune klasik tarzda actions twiddle

2. Kapatma eylemleri yerine dize Kullanım action yardımcı geçiş fonksiyonu. Böylece her yerde tanımlamanıza gerek yok. sample twiddle for closure actions tarzı

3. route-action-helper addon doğrudan route-action yardımcı kullanarak sadece sarma fonksiyonları tarafından her yerde tam anlamıyla gelen rota eylem çağırabilir. Klasik tarzı ve Kapanış stili ve Neden Kapatma arasındaki

Sample twiddle

karşılaştırılması tercih edilebilir?

  • Klasik tarzdaki Her seviyede eylemleri tanımlamak ve size yuvalama dışında tüm yol oluncaya kadar her seviyede işlem başlatma sendAction kullanmak gerekir.
  • Klasik eylemlerde değil, kapatma eylemlerinde değer döndürebilirsiniz.
  • Değerleri, klasik eylemlerde değil, kapatma eylemlerinde körebilirsiniz.
  • Kapatma eylemleri, eylem bulunmazsa hemen başarısız olur. ancak tasarım gereği klasik eylemler, sadece değerlerinin çağrılması üzerine hataları rahatlıkla artıracaktır.
  • İşlemleri kimin gerçekleştireceği ve iş mantığını yapacak gibi karmaşıklığı kodlamak?
  • Kapatma işleminde, değeri ve değeri olan bir özelliği ayarlamak için eylemi ve yardımcı yardımcıyı birleştirebilirsiniz. onclick=(action (mut title) value="titlevalue")
  • Kapatmada, işlevi çağırmak için hedef nesneyi belirtebilirsiniz. (action 'save' target=session), geçerli içerik yerine session nesnesindeki actions karma dosyasına bakar.

bu ilgili umut verici maddenin Bazı,
- miguelcamba makale ember-closure-actions-in-depth
- emberigniter makale send-closure-actions-up-data-owner
- Tersane - - ember-best-practice-stop-bubbling-and-use-closure-actions
- Kor haritadan blog Why action helper?
Blog 1.13 release article
emberjs - Alisdair McDiarmid sitesinden - blog from alexdiliberto ember-closure-actions

+0

Neden * eski stil klasik işlevler tarzı * teşvik edilmiyor? (1) ve (2) arasındaki fark arasında daha fazla ayrıntı yapabilir misiniz? –

+1

@LiXinyang Güncellenmiş fark ve neden kapanma tercih edilir ve iyi bir yazı ile birlikte. – kumkanillam

+0

Zaman ayırdığınız için teşekkürler Kumkanillam. Upvoted! +10 Bütün bu referanslar mükemmel –

İlgili konular