Обмен событиями между видами
Как сделать обмен событиями между двумя независимыми видами?
Например в одном виде мы сделали операцию над пользователями. В итоге часть пользователей больше тут не отображаются. Но они должны будут отображаться в другом виде. Получается этот другой вид нужно обновить, чтобы он загрузил этих пользователей. В контроллере второго вида я сделал подписку на глобальное событие:
listen: {
controller: {
"*": {
"preTrialStage.sendApplicationToTrial": "onSendApplicationToTrial"
}
}
},
onSendApplicationToTrial: function() {
this.getView().getStore().reload();
},
А в первом виде (точнее в его контроллере) я генерирую это событие. Но listen является приватным свойством в Ext.app.ViewController и по идее его использовать нельзя. Как быть в этом случае? |
На ум приходит идея сделать глобальный стор для пользователей и чейнед сторы для отображения избранных записей в разных вьюшках. Тогда все будет синхронизироваться автоматом. Можете подписаться на события главного стора если надо.
|
сторы разные. Объединить не удасться.
Подписка на сторе-домен нельзя, listen как я уже сказал приватный. Надо от него как-то легально избавиться. |
А глобально ?
Ext.define('Fiddle.controller.Main', {
extend : 'Ext.app.Controller',
listen : {
global : {
customevent : 'onCustomEvent'
}
},
onCustomEvent : function(arg1, arg2) {
console.log('global event domain', arg1, arg2);
}
});
Ext.application({
name : 'Fiddle',
controllers : [
'Main'
],
launch : function() {
new Ext.button.Button({
renderTo : Ext.getBody(),
text : 'Fire customevent',
handler : function() {
Ext.GlobalEvents.fireEvent('customevent', 'foo', 'bar');
}
});
Ext.GlobalEvents.on('customevent', function(arg1, arg2) {
console.log('on', arg1, arg2);
});
}
});
|
Интересный класс Ext.GlobalEvents
Ну он по идее тут спасет положение, чтобы не пользоваться listen, которого нет в документации |
| Часовой пояс GMT +3, время: 12:58. |