Aby uzyskać krótką odpowiedź, możesz użyć dodatku ember-route-action-helper.
<button {{action (route-action 'onButtonClick')}}>ClickToCallRouteAction</button>
Istnieją trzy sposobem komunikacji actions
1. Stary styl klasyczny styl funkcje tj., Przekazując nazwę funkcji jako ciąg od góry do dołu. i we wszystkich miejscach musimy zdefiniować tę samą funkcję i zapewnić. Użyj bąbelka, aby uzyskać sendAction
. i send
bańka metody od kontrolera do hierarchii trasy.
Nie jest to zalecane. Próbka klasyczny styl actions twiddle
2. Działania Zamknięcie Zastosowanie action
pomocnik wprost funkcyjne zamiast tylko ciąg. tak, że nie trzeba go definiować wszędzie. sample twiddle for closure actions styl
3. route-action-helper addon można bezpośrednio wywołać działanie trasy z dowolnego dosłownie tylko przez zawijania funkcji wykorzystujących route-action
pomocnika.
Sample twiddle
Porównanie pomiędzy klasycznym stylu i stylu Zamknięcie i dlaczego zamknięcie jest preferuje?
- w stylu klasycznym, trzeba zdefiniować działania na każdym poziomie i użyć sendAction aby wywołać działania na każdym poziomie, dopóki nie dostał całą drogę ze swojego gniazdowania.
- Możesz zwrócić wartość w akcjach zamknięcia, ale nie w klasycznych działaniach.
- Możesz przekierować wartości w akcjach zamknięcia, ale nie w klasycznych działaniach.
- Działania zamykające ulegają natychmiastowemu niepowodzeniu, jeśli akcja nie zostanie znaleziona. ale klasyczne działania według projektu, leniwie podnoszą błędy tylko po wywołaniu wartości .
- Złożoność kodowania, jak kto będzie obsługiwał akcje i logikę biznesową ?.
- W zamknięciu można połączyć działanie i mut pomocnika, aby ustawić właściwość z wartością.
onclick=(action (mut title) value="titlevalue")
- W zamknięciu można określić obiekt docelowy, aby wywołać funkcję.
(action 'save' target=session)
będzie patrzył na mieszanie actions
obiektu session
zamiast bieżącego kontekstu.
Niektóre obiecujące artykule dotyczącym tego
- miguelcamba artykuł ember-closure-actions-in-depth
- emberigniter artykuł send-closure-actions-up-data-owner
- emberjs blog 1.13 release article
- stocznia - ember-best-practice-stop-bubbling-and-use-closure-actions
- blog z Ember mapie Why action helper?
- blog od Alisdair McDiarmid ember-closure-actions-have-return-values
- blog od alexdiliberto ember-closure-actions
Dlaczego * stary styl klasycznych funkcji * nie jest zachęcany? Czy możesz rozwinąć więcej między różnicą między (1) i (2). –
@LiXinyang Zaktualizowana różnica i dlaczego zamknięcie jest preferowane i wraz z dobrym artykułem. – kumkanillam
Dzięki za poświęcony czas @kumkanillam. Rewizja! +10 Wszystkie te odniesienia są wspaniałe –