Как же работает fireViewEvent() в ViewController
Всем привет.
Пытаюсь создавать события с помощью fireViewEvent(), но ничто их не слышит. Есть своя таблица, наследованная от класса Ext.grid.Panel. Там по двойному клику, запускается событие this.fireViewEvent('vieworder'). Эта моя таблица вставлена в закладку таб-панели, закладки создаются динамически. Объявил слушателя в табпанели, но он ничего не слышит. { xtype: 'tabpanel', region: 'center', layout: 'fit', reference: 'centerPanel', listeners: { vieworder: 'onCreateTab' } } Как сделать, чтобы таб-панель услышала сообщение из вложенной таблицы в одну из её закладок? Как я понял fireViewEvent() слышит ViewController, находящийся выше в иерархии. У меня их всего два, один для таблицы, а второй самый главный, в View которого объявлена таб-панель. Как понять где теряется созданное событие, ну или может быть там какие-то скрытие ViewController, созданные системой и находящиеся между моими двумя? |
Попробовал не динамически создавать закладки, а явно и всё заработало.
{ xtype: 'tabpanel', region: 'center', layout: 'fit', reference: 'centerPanel', items:[{ xtype: 'orderGroup', listeners: { vieworder: 'onCreateTab' } }] } Как мне тоже самое сделать при динамическом создании закладок? Сейчас, скажем при нажатии кнопок, создаю новые закладки вызывая эту функцию: this.createTab(record.raw.panel, record, { xtype: record.raw.panel, title: record.raw.text, //listeners: { // vieworder: function(view, record) { //this.getController().fireViewEvent('vieworder', view, record); // } //}, }); Вот её реализация: createTab: function (prefix, record, cfg) { var tabs = this.lookupReference('centerPanel'), id = prefix + '_' + record.getId(), tab = tabs.items.getByKey(id); if (!tab) { cfg.itemId = id; cfg.closable = true; tab = tabs.add(cfg); } tabs.setActiveTab(tab); }, Я попробовал добавить слушателя для каждой так созданной закладки, но эффект получается совершенно другой. (Я закомментировал тот участок как я это пытался делать). В этом случае событие перехватывает не закладка, а таблица внутри закладки. |
по мойму нужен очень краткий пример создания динамических вкладок в песочнице...
|
вы тоже также выкрутились? -> cfg.closable = true;
а где об этом прочитали? мне пришлось это просто наобум применить... |
Цитата:
|
Цитата:
Жаль только там вариант, когда они одну закладку заранее создали и уже из неё создают динамически другие при двойном клике по строке таблицы с билетами. По сути то что я как раз делаю, только у меня не должно быть уже готовых закладок при старте приложения как у них. |
в соседней ветке аналогичные траблы...
сделайте в песочнице - это в будущем для вас окупится!!! я с вашим примером позже смогу заняться, пока в соседней ветке работаю... потому некогда. |
Цитата:
|
Цитата:
Надо всё же убить день или два и создать пример. |
Как я понял TabPanel должна иметь изначально хотя бы одну закладку. Еще обратил внимание, что у Вас в центральном регионе стоит tabpanel, у которой layout: 'fit'... Вероятно эта строка конфига просто игнорируется при рендеринге, потому как у tabpanel layout = 'card' и указывать это, как я понимаю, вовсе не обязательно. А вот тут:
http://docs.sencha.com/extjs/5.1/5.1.../Ext.tab.Panel есть, возможно, ответы на Ваши вопросы и некие примеры... ;-) Да, и возможно, listeners надо поставить во viewConfig. |
Часовой пояс GMT +3, время: 01:56. |