Отвечая на очень старый вопрос, я полагаю, что в текущих версиях Sencha touch (2.2+) у нас есть альтернативный метод, который я предпочитаю. Вот это для вашей оценки.
Альтернативой является использование функции маршрутов контроллеров.
ПРИМЕЧАНИЕ: Ext.Dispatch устарел в Sencha Touch 2.2, если вы все еще хотите использовать метод диспетчеризации, вам нужно получить контроллер и вызвать метод для него, как описано здесь. Как передавать данные между экранами в sencha touch2.0?
Сначала вы определяете маршруты, которыми интересуется контроллер.
Ext.define('My.controller.Profile', {
extend: 'Ext.app.Controller'
,config: {
routes: {
'products/:id': 'showProduct'
}
}
,showProduct: function(id) {
console.log('Load and Show product... ' + id);
}
});
Далее вы создаете ссылку, URL-адрес которой имеет формат href:
<a href="#products/1234">View Product</a>
Нажатие на ссылку вызовет метод контроллеров Product showProduct
с id
, установленным в 1234.
Или, если вы хотите сделать это программно, вы можете написать:
location.hash = "products/1234";
, который будет иметь тот же эффект.
Я думаю, что это довольно чисто, слабо связано и меньше зависит от внутренних структур. Открыт для идей. :)