2017-02-17 3 views
5

Ich habe zwei Komponenten und eine auf der anderen sitzt. Ich brauche ein Ereignis Hauptroute von Kind KomponenteEmber Komponente senden Aktion Route

enter image description here

Bitte lassen Sie mich wissen (beide Komponenten in gleichen Weg benutzen) zu senden ist es eine standardisierte Möglichkeit, das zu tun.

Antwort

13

Für kurze Antwort, die Sie können, können Sie ember-route-action-helper Addon verwenden.

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

Es gibt drei Wege von Aktionen Kommunikation,

1. Old style klassischen Funktionen Stil dh., Funktionsnamen von oben nach unten als String übergeben. und an allen Orten müssen wir die gleiche Funktion definieren und bereitstellen. Verwenden Sie sendAction zum Blasen. und send Methodenblase vom Controller zur Routenhierarchie.

Dies wird nicht gefördert. Probe klassischen Stil actions twiddle

2. Closure Aktionen Verwendung action Helfer Passfunktion statt nur String. damit Sie es nicht überall definieren müssen. sample twiddle for closure actions Stil

3. route-action-helper addon Sie direkt Routenaktion von überall wahrsten Sinne des Wortes nur durch Umwickeln Funktionen route-action Helfer aufrufen können.

Sample twiddle

Vergleich zwischen klassischem Stil und Schließung Stil und Warum Closure ist preferrable?

  • Im klassischen Stil, müssen Sie Aktionen auf jeder Ebene definieren und verwenden sendAction die Aktion auf jeder Ebene auszulösen, bis Sie aus Ihrer Verschachtelung des ganzen Weg bekamen.
  • Sie können Wert in Abschlussaktionen, aber nicht in klassischen Aktionen zurückgeben.
  • Sie können Werte in Abschlussaktionen curry aber nicht in klassischen Aktionen.
  • Abschlussaktionen schlagen sofort fehl, wenn die Aktion nicht gefunden wird. aber klassische Aktionen von Design, würden Fehler nur nach Aufruf Werte träge erhöhen.
  • Kodierung Komplexität wie Wer wird mit Aktionen und Business-Logik?
  • In Schließung, können Sie Aktion und mut Helfer kombinieren, um eine Eigenschaft mit Wert zu setzen. onclick=(action (mut title) value="titlevalue")
  • In Schließung können Sie Zielobjekt angeben Funktion aufzurufen. (action 'save' target=session) würde anstelle des aktuellen Kontext auf dem session Objekt am actions Hash aussehen.

dieser Teil des vielversprechenden Artikel über,
- miguelcamba Artikel ember-closure-actions-in-depth
- emberigniter Artikel send-closure-actions-up-data-owner
- emberjs Blog 1.13 release article
- Werft - ember-best-practice-stop-bubbling-and-use-closure-actions
- Blog von Ember Karte Why action helper?
- Blog von Alisdair McDiarmid ember-closure-actions-have-return-values
- Blog von alexdiliberto ember-closure-actions

+0

Warum * alten Stil klassischen Funktionen Stil * wird nicht ermutigt? Können Sie mehr zwischen dem Unterschied zwischen (1) und (2) ausarbeiten. –

+1

@LiXinyang Aktualisierte Unterschied und warum Schließung ist bevorzugt und zusammen mit einigen guten Artikel. – kumkanillam

+0

Danke für Ihre Zeit @ kumkanillam. Upvoted! +10 Alle diese Referenz sind greats –

Verwandte Themen