#javascript #extjs #tabs #extjs4 #tabpanel
#javascript #extjs #вкладки #extjs4 #панель вкладок
Вопрос:
Еще раз Алоха, ИТАК.
Я занят работой над проектом, который в значительной степени состоит из EXTJS для работы с интерфейсом. Я использую версию 4.0.0, предполагая, что это то, что необходимо знать. У меня есть некоторый код следующего содержания:
panel = Ext.create("Ext.panel.Panel",{
//initializing stuffs
})
Некоторые из них затем
tabs = Ext.create("Ext.tab.Panel", {
//initialize config
items: [
//the panels
]
})
Теперь моя большая проблема заключается в том, что мне нужно иметь возможность привязать событие к реальным вкладкам. Я знаю о возможности привязки событий к панели вкладок и панели вкладок, но на самом деле мне нужно привязать событие click к одной из вкладок на панели. Я попробовал что-то вроде этого:
panel = Ext.create("Ext.panel.Panel", {
//initializing stuffs
listeners: {
click: {
fn: function() {
console.log("in click listener for panel")
}
}
}
})
Однако проблема в том, что, исходя из того, что я могу сказать, это привязывается к самой фактической панели, а не к вкладке на панели вкладок. С интересной стороны, это на самом деле даже не привязывается к фактической панели, что касается функциональности, потому что я никогда не вижу эту информацию журнала консоли.
В любом случае, кто-нибудь из вас здесь случайно не знает, как привязать события непосредственно к вкладкам? Или даже как получить доступ к вкладкам напрямую? Я просматривал документы ExtJS API, но все еще ничего не могу найти, так что было бы здорово, если бы кто-нибудь здесь мог помочь! 😀
Просто чтобы было понятно, я не пытаюсь подключиться к изменению вкладки. Я пытаюсь подключиться к фактическому событию щелчка при нажатии на вкладку, потому что я собираюсь проверять, нажата ли средняя кнопка мыши, чтобы я мог закрыть вкладку, если это так.
Ответ №1:
Я поместил это на вкладку внутри панели вкладок в ExtJS 3. Что-то подобное должно работать в 4.
listeners: {
activate: function() {
var me = this;
Ext.fly(this.ownerCt.getTabEl(this)).on({
click: function() {
me.loadProducts();
}
});
},
single: true
},
loadProducts: function() {
this.load({
url: 'products.jsp',
params: {
caseID: window.caseID
},
scripts: true
});
Комментарии:
1. Вам следует посмотреть на свойство TabBar на панели вкладок в Ext4. Используйте индекс вкладки, чтобы найти ее из элементов панели вкладок, и прикрепите к ней обработчик нажатия.
2. В итоге я выяснил, что мне нужно выяснить; после добавления вкладки на панель вкладок это добавляет свойство к компоненту, который вы добавили в called tab, который представляет кнопку tab, поэтому я просто привязал к ней onmousedown, и все отлично.
3. @Sir mXe: мне хотелось сделать что-то похожее на urs, но я действительно не мог понять, что вы сделали, боюсь, новичок в extjs, не могли бы вы, пожалуйста, объяснить подробнее, пример тоже приветствовался бы, заранее спасибо
4. @astrocybernaute Я не думаю, что вы нашли ответ, не так ли?
Ответ №2:
Вы можете добавить слушателей в саму TabPanel, которые прослушивают beforetabchange
и / или tabchange
Комментарии:
1. Проблема в том, что beforetabchange и tabchange не решают проблему интерпретации нажатий. Я собираюсь настроить привязку к событию щелчка и оттуда определить, нажата ли средняя кнопка мыши. Я обязательно обновлю первоначальный вопрос; спасибо за предложение, хотя: D