Вопрос

Запросы в контролах

Всем доброго времени суток. Версия 7.10.

К примеру, есть некоторый контрол, наследующийся от Terrasoft.Component. Как я понимаю, сам процесс генерации непосредственно HTML-кода происходит на этом этапе:

 

renderComponent: function(buffer, renderData) {
		var self = renderData.self;
		if (self.html) {
			Ext.DomHelper.generateMarkup(self.html, buffer);
			return;
		}
		var tpl = self.getTpl();
		var tplData = self.getTplData();
		tpl = self.processTemplate(tpl, tplData);
		var template = new Ext.XTemplate(tpl);
		self.prepareTpl(template, tplData);
		template.applyOut(tplData, buffer);
	},

(взято отсюда: https://academy.terrasoft.ru/jscoresdk/#!/api/Terrasoft.controls.Compon…)

Собственно, вопрос такой: можно ли сюда вставить какой-либо запрос, типа getEntityCollection? Задача по сути - надо внести некоторые изменения в tplData, получить данные для которых можно только запросом.

Если я делаю запрос после строки var tplData = self.getTplData(); а последующее - переношу внутри функции-обработчика результата запроса, то в консоль вываливается ошибка: Uncaught Terrasoft.ItemNotFoundException: Элемент не создан

Внутрь самой getTplData, понятно, запрос тоже не добавить - там функция возвращает return.

Можно ли вообще реализовать такую штуку с запросом?

Нравится

2 комментария

Добрый день. Да, вы можете воспользоваться esq в данном методе. Однако в момент вызова функции обратного вызова часть внутренних переменных контрола будет уже недоступна. Вам стоит смотреть в сторону реализации взаимодействия контрола с моделью, как это реализовано в базовых контролах системы. Пример реализации вы можете посмотреть в SDK https://academy.terrasoft.ru/sites/default/files/documents/docs/technic… стр. 672.

Терещук Сергей,

Сергей, доброго дня.

Спасибо за ответ, хотя вопрос в общем-то уже решён.. но появился следующий: можно ли в контролах использовать миксины (подключить другой контрол с доступом к его функциям)? Есть пара контролов, в которых используются похожие функции, хотелось бы вынести их отдельно, чтобы не плодить копипасту.

Может тоже есть, где посмотреть примеры?

Показать все комментарии