Hinweis: Ich bin ein totaler Ignorant bezüglich Javascript.
Ich habe meine ExtJS 4.1 MVC App in mehrere Controller aufgeteilt:
%Vor% Ich möchte auf ein "Ereignis" antworten, nicht auf ein DOM-Ereignis , sondern auf ein Ext.form.action.Submit.success
-Ereignis, indem Funktionen in beide my Auth
und% co_de aufgerufen werden % Controller. Der zusammengefasste Code für den ersten Teil ist hier:
Das funktioniert, fühlt sich aber falsch an. Gibt es einen richtigen Weg, dies zu tun? Es scheint, als ob ich ein einzigartiges Ereignis auslösen sollte, das von beiden Controllern gehört wird, aber ich kann nicht verstehen, wie man das mit Quiz
macht. Irgendeine Anleitung?
Danke! Ich bin wirklich dankbar für all die großartigen Ideen und Ratschläge.
Es macht Sinn für mich, ein benutzerdefiniertes Ereignis aus dem Formular auszulösen und es einfach in beiden Controllern anzuhören, wie Sie es hier gesagt haben:
%Vor%Es scheint, als müsste ich ein einzigartiges Ereignis abfeuern, das von beiden gehört wird Controller
Dann können Sie > in jedem Ihrer Controller >> mit Controller
Und fügen Sie dann Ihrem Quiz
-Controller dasselbe hinzu:
Ich habe diesen Ansatz in 4.1.0 und 4.1.1 erfolgreich angewendet.
Es sollte wirklich
sein %Vor% oder etwas in dieser Richtung (um eine korrekte this
-Referenz zu haben, die auf den 'Eigentümer' der Methode zeigt, das Controller-Objekt)
Warum verwenden Sie diese unorthodoxe Methode, um die Methode des aktuellen Controllers aufzurufen? Setzen Sie einfach den scope
für den Erfolgsrückruf und rufen Sie dann this.finishLogin () auf.
Sie können auch eine andere Controller-Instanz mit Controller#getController
abrufen.
Wenn Ihre Controller-Methoden nicht voneinander abhängig sind, können Sie beide dazu bringen, das gleiche Ereignis zu hören.
Eine andere Lösung besteht darin, ein benutzerdefiniertes Ereignis auszulösen, sobald die Anmeldung abgeschlossen ist. Sie könnten dies für das Anwendungsobjekt
tun %Vor%und in der Init-Methode Ihres Controllers:
%Vor% Bitte beachte, dass du diese Ereignisse nicht über Controller#control
anhören kannst - siehe den Blogeintrag von Alexander Tokarev für einen Patch zu Ext, um dies zu erreichen.
Es gibt keine Standardmethode, um Ereignisse zwischen Controllern auszulösen, aber es ist mit einigen benutzerdefinierten Hacks möglich. Siehe meinen letzten Blogeintrag .
Ich habe auch nach diesem gesucht und alles, was Sie brauchen, ist Asanda.app.getController ('Quiz'). setupAssignment () ;, wobei Asanda der Name Ihrer App ist
Tags und Links controller events extjs