Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.04.2016, 20:28
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

События контроллера приложения
Могу ли я подписаться как-то на события контроллера приложения Ext.app.Controller из какого-либо вида?

У меня есть контроллер, который обрабатывает ввод из сканера штрих-кодов. Он сам что-то делает и когда вводится код, то генерирует событие barcode.

Я хотел бы, чтобы некоторые виды его отображали. Но как из вида подписаться на событие контроллера (не путать с контроллером вида) приложения не ясно.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #2 (permalink)  
Старый 29.04.2016, 20:33
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Пока сделал так. Правильно ли это я сделал?

Ext.define("Element.view.cuttingList.CuttingListController", {
	
	extend: "Ext.app.ViewController",
	alias: "controller.cutting-list",
	
	init: function() {
		var app = Element.getApplication();
		app.getController("Barcode").on("barcode", "onBarcode", this);
	},
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #3 (permalink)  
Старый 29.04.2016, 21:15
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Используйте домены событий, я их именно для таких целей и добавлял: http://stackoverflow.com/questions/1...55497#19255497

А вот ещё кусок примера в документации, о которой я уже успел забыть. :) http://docs.sencha.com/extjs/6.0/6.0...-method-listen

Последний раз редактировалось nohuhu, 29.04.2016 в 21:18.
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2016, 17:05
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Правильно?

init: function() {
		this.listen({
			controller: {
				"*": {
					barcode: "onBarcode",
					scope: this
				}
			}
		});
},


или

"#barcode": {
	barcode: "onBarcode",
	scope: this
}


или

"barcode": {
	barcode: "onBarcode",
	scope: this
}


Правда последнее похоже будет конфликтовать с алиасами контролеров видов... Поэтому наверное лучше так:

"app.barcode": {
	barcode: "onBarcode",
	scope: this
}
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

Последний раз редактировалось khusamov, 30.04.2016 в 17:12.
Ответить с цитированием
  #5 (permalink)  
Старый 02.05.2016, 20:51
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Да, так должно работать. Две небольшие поправки: во-первых, scope: this избыточно, т.к. это и есть контекст вызова по умолчанию для методов. Во-вторых, в Ext 5+ можно вместо вызова this.listen() просто задать конфигурацию listen:

Ext.define('My.app.Controller', {
    extend: 'Ext.app.Controller',

    listen: {
        controller: {
            '#barcode': {
                'barcodeInput': 'onBarCodeInput'
            }
        }
    },

    onBarCodeInput: function() {
        ...
    }
});


Старайтесь писать декларативный код везде, где возможно; это вам пригодится многократно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 Ext приложения в одном :) XAPuTOH ExtJS 2 01.02.2016 07:40
ionic модальное окно при старте приложения andz2 Angular.js 3 10.06.2015 18:29
Обработка события внутри события grifangel Общие вопросы Javascript 6 04.09.2014 12:34
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Передача параметров в колбэки и дальнейшее их вешанье на события. Gremlin Общие вопросы Javascript 17 13.08.2011 08:54