#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. При следующем ответе на вопрос вам следует добавить некоторые пояснения. Не просто публикуйте код.