Quando si utilizza this.sendAction('actionName')
stai zampillante un'azione che si dovrà prendere sul componente/controller con actions
//controller/route/component.js
actions: {
actionName: function() {
//Do something
}
}
Se si desidera inviare che a monte della catena, si chiamare di nuovo sendAction('')
sul componente/controller e riprenderlo sul genitore (e così via).
L'altro approccio this.get('action')()
utilizza le azioni di chiusura, che sono normali funzioni javascript. Questi sono il modo preferito per richiamare azioni in Ember 1.13.X per quanto ne so. Una cosa chiara che le azioni di chiusura hanno è che puoi avere valori di ritorno. Il che significa che si può avere qualcosa di simile:
//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
});
}
}
Molto può essere scritto circa le azioni di chiusura, ma altri hanno scritto di gran lunga meglio di me, quindi vi consiglio i seguenti articoli:
E se sei nuovo di tutto il concetto DDAU (Data Down Actions Up), ti consiglio veramente il Sam's article del concetto in generale.
Aggiornamento: C'è anche un addon (collegato nei commenti da @locks) che consente closure actions to bubble to routes.
fonte
2016-01-11 18:53:14
La versione decimale è importante - Ember 2. cosa? –
ember 2.2.0 scusa – maximusmusterus
Supponiamo che l'ultima versione delle guide sia la più aggiornata possibile, il team di documentazione si è preso molta cura di farlo. – locks