Вопрос по ExtJS: обращение к элементам?
Здравствуйте
Если кратко — есть панель, она содержит в себе четыре колонки в каждой из которых по одному элементу — всего три комбобокса. Допустим при событии select у первого комбобокса необходимо что-то сделать со вторым (как пример hide). Вопрос про обработчик событий и тп. меня не волнует, я хочу понять — как правильно обращаться к элементам, которые по сути в одном объекте?
Самый простой способ обратиться ко второму комбобокус — получить его по id: Ext.getCmp('temp-combo-second').hide(); Но что-то мне подсказывает, что подобный способ далеко не самый оптимальный, ведь все комбобоксы находятся в одной панеле. Как правильнее/грамотно получить этот элемент, чтобы не нарушать принципы ООП?
Спасибо за внимание
Задачу в которой столкнулся с заданным выше вопросом — решил, но не хочу превращаться в быдлоExtJSкодера =/
Для пример набросал псевдокод:
Temp.panel.Panel = function(config) {
config = config || {};
Ext.applyIf(config,{
id: 'temp-panel-id'
,url: Temp.config.connectorUrl
,layout: 'column'
,items: [{
layout: 'form'
,items: [{
xtype: 'modx-combo'
,id: 'temp-combo-first'
//...
}]
},{
layout: 'form'
,items: [{
xtype: 'modx-combo'
,id: 'temp-combo-second'
//...
}]
},{
layout: 'form'
,items: [{
xtype: 'modx-combo'
,id: 'temp-combo-third'
//...
}]
}]
});
Temp.panel.Panel.superclass.constructor.call(this,config)
};
Ext.extend(Temp.panel.Panel,MODx.Panel); Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
чтобы увидеть его. В консоли хрома можно будет погулять по этому объекту и найти те элементы, к которым ты хочешь обратиться.
Будет что-то типа
Но не уверен, я в ExtJS новичок.
К сожалению такой вариант не подходит, так как копание «руками» в объектах ExtJS гиблое дело, абсолютно бесполезное. В них столько всякого «служебного» хлама, что докопаться до нужного объекта возможно — но проще уж выбрать по ID. Приблизительно, таким макаром this.items.items[0] я лишь докопаюсь до первой колонки и надо еще глубже)
Я вот и сейчас копаю, глубоко-глубоко =)
Вот так можно обращаться, с использованием ООП.
Если что не понятно спрашивай, поясню.