Сенча тач 2- замена Внешнего отправителя? - PullRequest
9 голосов
/ 07 ноября 2011

Какая замена для sencha touch 1.1 Ext.dispatch в sencha touch 2?

Мне нужна замена для кода ниже

listeners:{
    itemtap:function(data,index){
        var record = data.getStore().getAt(index);
         // the record that has been clicked.
         Ext.dispatch({
            controller: 'ControllerName'
            ,action: 'ControllerMethod'
            ,record: record
        });
    }
}

Ответы [ 5 ]

8 голосов
/ 02 марта 2012

В sencha touch 2.0, чтобы получить экземпляры контроллера из любого места, используйте

<your app name>.app.getController('your controller name');

, где имя вашего приложения настроено в app.js

3 голосов
/ 25 апреля 2012

Попробуйте, это должно работать:

window['AppName'].app.getController('ControllerName').MethodName(Args)

Или, альтернативно:

window['AppName'].app.dispatch({
    controller: 'ControllerName',
    action: 'MethodName',
    args:ArgsArray
}
3 голосов
/ 07 ноября 2011

Метод Ext.dispatch все еще существует в Sencha Touch 2: http://docs.sencha.com/touch/2-0/#!/api/Ext.app.Application-method-dispatch

Но если по какой-то причине вам просто не нравится его использовать, вы можете получить экземпляр контроллера и вызвать метод напрямую:

Ext.ControllerManager.get('ControllerName').ControllerMethod({record: record});
1 голос
/ 29 февраля 2012

Когда вызов будет выполнен из контроллера, у вас будет экземпляр приложения методом getApplication, есть метод getControllerInstance, который возвращает массив.

0 голосов
/ 22 сентября 2012
yourAppName.getApplication().getController('yourControllerId').yourMethodName(args);
...