Обмен событиями между видами
Как сделать обмен событиями между двумя независимыми видами?
Например в одном виде мы сделали операцию над пользователями. В итоге часть пользователей больше тут не отображаются. Но они должны будут отображаться в другом виде. Получается этот другой вид нужно обновить, чтобы он загрузил этих пользователей. В контроллере второго вида я сделал подписку на глобальное событие: 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, время: 11:20. |