 
			
				04.06.2015, 15:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2015 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как же работает fireViewEvent() в ViewController
			 
			
		
		
		
		Всем привет. 
Пытаюсь создавать события с помощью fireViewEvent(), но ничто их не слышит.
 
Есть своя таблица, наследованная от класса Ext.grid.Panel. Там по двойному клику, запускается событие this.fireViewEvent('vieworder').
 
Эта моя таблица вставлена в закладку таб-панели, закладки создаются динамически. Объявил слушателя в табпанели, но он ничего не слышит. 
 
{
        xtype: 'tabpanel',
        region: 'center',
        layout: 'fit',
        reference: 'centerPanel',
        
        listeners: {
            vieworder: 'onCreateTab'
        } 
}
Как сделать, чтобы таб-панель услышала сообщение из вложенной таблицы в одну из её закладок? 
 
Как я понял fireViewEvent() слышит ViewController, находящийся выше в иерархии. У меня их всего два, один для таблицы, а второй самый главный, в View которого объявлена таб-панель. 
 
Как понять где теряется созданное событие, ну или может быть там какие-то скрытие ViewController, созданные системой и находящиеся между моими двумя?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.06.2015, 15:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2015 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Попробовал не динамически создавать закладки, а явно и всё заработало. 
{
        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);
    },
Я попробовал добавить слушателя для каждой так созданной закладки, но эффект получается совершенно другой. (Я закомментировал тот участок как я это пытался делать). В этом случае событие перехватывает не закладка, а таблица внутри закладки.  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 15:51
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 по мойму нужен очень краткий пример создания динамических вкладок в песочнице... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 15:53
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 вы тоже также выкрутились? -> cfg.closable = true; 
а где об этом прочитали? мне пришлось это просто наобум применить... 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 18:03
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2015 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от khusamov
			 
		
	 | 
 
	| 
		по мойму нужен очень краткий пример создания динамических вкладок в песочнице...
	 | 
 
	
 
 Хотел сделать, но с самой песочницей разбираться не меньше чем с самой ExtJS приходится.    То же думаю, что без примера возможно сложно понять мою проблему.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 18:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2015 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от khusamov
			 
		
	 | 
 
	
		вы тоже также выкрутились? -> cfg.closable = true; 
а где об этом прочитали? мне пришлось это просто наобум применить...
	 | 
 
	
 
 Я взял из примера что с ExtJS идет  ticket-app Там в файле Ticket.view.main.MainController.js как раз код, который я для себя скопипастил и отрывок которого привел в сообщении, от туда и это фишка с выводом крестика для закрытия закладки. 
 
Жаль только там вариант, когда они одну закладку заранее создали и уже из неё создают динамически другие при двойном клике по строке таблицы с билетами. По сути то что я как раз делаю, только у меня не должно быть уже готовых закладок при старте приложения как у них.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 18:12
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 в соседней ветке аналогичные траблы... 
сделайте в песочнице - это в будущем для вас окупится!!!  
я с вашим примером позже смогу заняться, пока в соседней ветке работаю... потому некогда. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 18:13
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Жаль только там вариант, когда они одну закладку заранее создали и уже из неё создают динамически другие при двойном клике по строке таблицы с билетами. По сути то что я как раз делаю, только у меня не должно быть уже готовых закладок при старте приложения как у них.
	 | 
 
	
 
 Вы можете сделать закладку заранее и СКРЫТЬ ЕЕ (каким либо способом) - а потом уже ее клонировать. Возможно прокатит вариант.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 18:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 01.06.2015 
					
					
					
						Сообщений: 57
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от khusamov
			 
		
	 | 
 
	| 
		Вы можете сделать закладку заранее и СКРЫТЬ ЕЕ (каким либо способом) - а потом уже ее клонировать. Возможно прокатит вариант.
	 | 
 
	
 
 Думал над таким вариантом, только у меня больше половины всех закладок придется заранее создавать, так как таблица из которой будут создаваться новые закладки будут присутствовать в большинстве закладок.
 
Надо всё же убить день или два и создать пример.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.06.2015, 22:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 20.04.2015 
					
					
					
						Сообщений: 39
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Как я понял TabPanel должна иметь изначально хотя бы одну закладку. Еще обратил внимание, что у Вас в центральном регионе стоит tabpanel, у которой layout: 'fit'... Вероятно эта строка конфига просто игнорируется при рендеринге, потому как у tabpanel layout = 'card' и указывать это, как я понимаю, вовсе не обязательно. А вот тут: 
http://docs.sencha.com/extjs/5.1/5.1.../Ext.tab.Panel
есть, возможно, ответы на Ваши вопросы и некие примеры... ;-) 
Да, и возможно, listeners надо поставить во viewConfig.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось AirGraph, 05.06.2015 в 23:13.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |