Sencha touch 2- замена Ext.dispatch?

#javascript #mobile #sencha-touch #sencha-touch-2

#javascript #Мобильный #sencha-touch #sencha-touch-2

Вопрос:

Чем можно заменить метод 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
        });
    }
}
  

Комментарии:

1. Проверьте это sencha.com/forum/showthread.php?151239-Ext.dispatch-replacement

2. Кстати, какое отношение имеет ruby on rails 3 к этому вопросу? 🙂

Ответ №1:

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

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

где указано имя вашего приложения в app.js

Ответ №2:

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

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

 Ext.ControllerManager.get('ControllerName').ControllerMethod({record: record});
  

Комментарии:

1. ?? Версия есть даже в ссылке man! это sencha 1.1, а не 2! Проверьте это sencha.com/forum/showthread.php?151239-Ext.dispatch-replacement

2. Мой плохой, но в любом случае контроллеры существуют в Sencha 2, у них просто другое пространство имен Ext.app.Controller . Вы можете вызвать статический метод getController , чтобы получить экземпляр контроллера, а затем вызвать из него какой-либо метод. Надеюсь, это поможет.

Ответ №3:

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

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

Или, в качестве альтернативы:

 window['AppName'].app.dispatch({
    controller: 'ControllerName',
    action: 'MethodName',
    args:ArgsArray
}
  

Ответ №4:

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

 this.getApplication().getControllerInstances()['yourcontrollername'].yourmethod(yourparams)
  

Ответ №5:

 yourAppName.getApplication().getController('yourControllerId').yourMethodName(args);
  

Комментарии:

1. При следующем ответе на вопрос вам следует добавить некоторые пояснения. Не просто публикуйте код.