Ich habe eine Reihe von verschachtelten Komponenten erstellt.Ember: verschachtelte Komponenten Ereignisse sprudeln
Der Code ist hier: http://emberjs.jsbin.com/hasehija/2/edit.
HTML:
{{#level-1}}
{{#level-2}}
{{#level-3}}
<button {{action 'handleAction'}}>
Click me (yielded)
</button>
{{/level-3}}
{{/level-2}}
{{/level-1}}
JS:
App.ApplicationController = Ember.Controller.extend({
actions: {
handleAction: function() {
alert('Handled in ApplicationController');
}
}
});
App.Level1Component = Ember.Component.extend({
actions: {
handleAction: function() {
alert('Handled in Level 1');
}
}
});
App.Level2Component = Ember.Component.extend({
actions: {
handleAction: function() {
alert('Handled in Level 2');
}
}
});
App.Level3Component = Ember.Component.extend({
actions: {
handleAction: function() {
alert('Handled in Level 3');
this.set('action', 'handleAction');
this.sendAction();
}
}
});
Was will ich die Ereignisse in der folgenden Art und Weise ist zu sprudeln erreichen:
Level3Component -> Level2Component -> Level1Component -> ApplicationController
Leider kann ich nicht die Ereignisse in einer der Komponenten behandeln; das Ereignis sprudelte bis zu ApplicationController
.
Gibt es eine Möglichkeit, die Aktionen von Components über die gesamte Komponentenhierarchie zu verteilen, so dass ich die Warnung 4 Mal anzeigen lasse (nach dem Hinzufügen von this.sendAction natürlich)?
Noch einmal, hier ist ein Code, mit dem Sie spielen können: http://emberjs.jsbin.com/hasehija/2/edit.
Vielen Dank! Es beantwortet meine Frage vollständig! Ich frage mich, ob das Ding mit der innersten Taste wirklich ein Bug ist. – andrusieczko
Hmm, wahrscheinlich ist es kein Bug ... Die Schaltfläche "Klick mich (innerhalb der Komponente)" ruft 'Level3Component', nicht' Level2Component', also genau an der Stelle auf, wo sie definiert wurde. Ich denke, es ist ein richtiges Verhalten. – andrusieczko
Ich sprach über "Klick mich (ergab)", sollte es die Komponente anstelle der ApplicationController – ppcano