Ich habe eine sehr einfache Komponente, die zwei Aktionen hat, starten und stoppen. Diese werden ausgelöst, wenn Sie auf Schaltflächen klicken. Die erste Aktion wird auf die Route geleitet und funktioniert wie erwartet, die zweite Aktion wird jedoch in der Komponente ausgelöst, jedoch nicht auf die Route.Ember.js (v2.4.5) Komponente vergibt keine zweite Aktion
Ich habe gerade angefangen, mit Ember herumzuspielen, aber ich nehme an, dass Komponenten mehr als eine Handlung vorführen können?
Es gibt keine Fehler in der Konsole, die Schaltfläche tut nichts und das Konsolenprotokoll von der Route wird nie angezeigt.
Komponente Aktionen
actions: {
start() {
console.log('component start called');
this.sendAction('start', this.get('item'));
},
stop() {
console.log('component stop called');
this.sendAction('stop', this.get('item'));
}
}
Routen Aktionen
actions: {
start (server) {
console.log('route start called');
server.set("settings.amazonTask", 'start');
server.save();
},
stop (server) {
console.log('route stop called');
server.set('settings.amazonTask', 'stop');
server.save();
}
}
Vorlage
<button type="button"
class="btn btn-default btn-sm" {{action "start"}}>
Turn on
</button>
<button type="button"
class="btn btn-default btn-sm" {{action "stop"}}>
Turn off
</button>
Dies natürlich funktioniert, hatte ich die Aktion für den Start festgelegt, aber die Aktion für den Stopp vergessen. Ich bin ein wenig verwirrt über den Rest Ihres Kommentars, obwohl ich weiß, was Sie eigentlich empfehlen. Können Sie einen Link zu den Dokumenten/Leitfäden oder ein weiteres detailliertes Beispiel angeben? –
Vielleicht Checkout der [ursprünglichen Blog-Post] (http://emberjs.com/blog/2015/06/12/ember-1-13-0-released.html#toc_close-actions). Ich empfehle, 'sendAction' nicht zu verwenden, da seine verwirrende Magie und normalerweise mit' this.attrs ['action']() 'whis ein eindeutiger Funktionsaufruf ist, der auch eindeutig ein Ergebnis liefert. – Lux