Ответ 1
Я бы использовал метод getController: http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-getController
EG: this.getApplication().getController('ControllerName').doSomething();
На данный момент, когда я нахожусь в контроллере и что я хочу вызвать функцию с другого контроллера, я делаю это:
App.app.getControllerInstances()['App.controller.OtherController'].do_something();
Мне кажется немного тяжело, есть ли еще один (лучший) способ сделать это?
Спасибо
Я бы использовал метод getController: http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-getController
EG: this.getApplication().getController('ControllerName').doSomething();
Если вы не находитесь в контексте вашего контроллера (например, в функции обратного вызова какого-либо объекта), вы можете сделать это.
MyAppName.app.getController('ControllerName').doSomething();
При использовании соглашения MVC в Sencha Touch 2 я рекомендую следующее при попытке вызвать метод "SomeMethodInB" в "ControllerB" изнутри "ControllerA":
MyAppName.app.getController( 'ControllerB').
'MyAppName' - это имя приложения, которое вы определили в определении основного приложения - обычно в вашем файле app.js.
В соответствии с форумами Sencha нижеследующее обесценивается:
this.getApplication() getController ( 'ControllerB') SomeMethodInB();..
http://www.sencha.com/forum/showthread.php?158996
Фактически единственный способ, с помощью которого я могу вызвать метод this.getApplication(), работать даже при вызове его из файла определения приложения (app.js).