#javascript #ajax #extjs #dom-events #tabpanel
#javascript #ajax #extjs #dom-события #панель вкладок
Вопрос:
Есть ли какой-либо способ добавить прослушиватель событий к событию загрузки / обновления панели вкладок на основе ajax в ExtJS v3.3.1? Мне нужно событие, которое срабатывает после извлечения содержимого вкладки и полного отображения, а не сразу после выбора / активации вкладки и отображения счетчика загрузки.
Я думал, что смогу добавить это событие к объекту Ext.Updater, возвращаемому getUpdater()
методом tabpanel, т.Е.:
myTabs.getUpdater().on('update', function()
{
console.log('tab loaded');
});
Но, похоже, это не работает. Есть идеи?
Редактировать: Вот моя полная реализация, чтобы было легче понять, что я пытаюсь сделать:
var myTabs = new Ext.TabPanel(
{
id : 'rec_tabs',
activeTab : 0,
enableTabScroll : true,
padding : 5,
autoWidth : false,
autoHeight : true,
border : false,
plain : true,
defaults : { autoHeight: true },
items :
[
{ title : 'Tab #1', autoLoad : { url : 'tab1_content.php', scripts : true } },
...
]
});
myTabs.render('tab_div');
myTabs.getUpdater().on('update', function()
{
console.log('tab loaded');
});
Ответ №1:
Наконец-то разобрался. Я не понял, что свойства объекта конфигурации «Автозагрузка» для каждого элемента TabPanel на самом деле просто используются в качестве параметров для метода Ext.Updater.update(). Итак, все, что мне нужно было сделать, это вместе с параметрами «url» и «scripts» определить свойство «обратный вызов» как функцию, которая будет выполняться, когда содержимое вкладки будет загружено в ее тело, и все готово.
Ответ №2:
Вы пробовали это?
myTabs.on("afterrender", function() {
console.log('tab loaded');
});
Комментарии:
1. Да, в этом тоже нет ничего хорошего, это срабатывает сразу после открытия вкладки и отображения счетчика.
2. Существует 5 вкладок, все они добавлены на панель с помощью объекта конфигурации автоматической загрузки, задающего URL-адрес, с которого извлекается содержимое, и имеют свойство «scripts», равное true.