2012-05-19 4 views
10

Für den Moment, als ich in einem Controller bin und dass ich möchte eine Funktion von einem anderen Controller nennen, ich dies tun:Ruf-Controller die Funktion von einem anderen Controller/Share Daten zwischen den Controllern

App.app.getControllerInstances()['App.controller.OtherController'].do_something(); 

Is scheint ein bisschen schwer für mich, gibt es einen anderen (besseren) Weg, dies zu tun? http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-getController

EG: this.getApplication().getController('ControllerName').doSomething();

Antwort

30

würde ich die getController Methode verwenden , du kannst das.

MyAppName.app.getController('ControllerName').doSomething(); 
11

Wenn Sie nicht im Zusammenhang mit Ihrem Controller (zum Beispiel in einer Callback-Funktion eines Objekts) sind

Dank

7

Wenn die MVC-Konvention in Sencha Touch 2 verwendet wird, würde ich folgende empfehlen, wenn eine Methode 'SomeMethodInB' in 'ControllerB' von innen 'ControllerA' genannt zu nennen versuchen:

MyAppName. app.getController ('ControllerB').

'MyAppName' ist der Name der Anwendung, die Sie im Kern App Definition definiert - in der Regel in Ihrer app.js Datei.

Nach den Sencha Foren wird die unten abgeschrieben:

this.getApplication() getController ('ControllerB') SomeMethodInB();..

http://www.sencha.com/forum/showthread.php?158996

die einzige Möglichkeit, die ich anrufen kann die „this.getApplication()“ In der Tat Methode funktioniert sogar, wenn es von meiner App-Definitionsdatei (app.js) aufrufen.