Kiedy używasz this.sendAction('actionName')
jesteś przepuszczanie się działania, które będziesz musiał złapać na części/kontroler z actions
//controller/route/component.js
actions: {
actionName: function() {
//Do something
}
}
Jeśli chcesz wysłać, że w górę łańcucha, będziesz Muszę ponownie zadzwonić pod numer sendAction('')
na komponent/kontroler i ponownie go złapać na rodzica (i tak dalej).
Inne podejście this.get('action')()
wykorzystuje akcje zamykające, które są zwykłymi funkcjami javascript. Jest to preferowany sposób wywoływania akcji w Ember 1.13.X, o ile wiem. Jedną z tych rzeczy, które mają działanie zamykające, jest to, że możesz mieć wartości zwracane. Co oznacza, że można mieć coś takiego:
//a controller
actions: {
saveResult() {
return this.get('model').save(); //notice the return (which returns a promise)
}
}
//some template that uses the controller above
{{a-component save=(action 'saveResult')}} // Passes the saveResult action to the component
//a-component.js
actions: {
someAction: function() {
this.attrs.save().then(() => {
//Do something with the return value
});
}
}
Wiele można by napisać o działaniach zamknięcia, ale inni napisali o wiele lepiej niż ja, więc polecam następujące artykuły:
A jeśli jesteś nowicjuszem w całej koncepcji DDAU (Data Down Actions Up), naprawdę polecam Sam's article o tej koncepcji w ogóle.
Aktualizacja: Istnieje również dodatek (powiązany w komentarzach przez @locks), który umożliwia closure actions to bubble to routes.
Ważna jest wersja dziesiętna - Ember 2. co? –
ember 2.2.0 przepraszam – maximusmusterus
Założono, że najnowsza wersja instrukcji jest tak aktualna, jak to możliwe, zespół dokumentacji dołożył dużo starań, aby tak się stało. – locks