#combobox #extjs4.1
#поле со списком #extjs4.1
Вопрос:
У меня есть подкласс ComboBox, который имеет настраиваемый шаблон для отображения своих данных. Как только щелкнут по одному элементу внутреннего списка, появляется прослушиватель события «щелчок» браузера, которому необходимо внести некоторые изменения в исходное поле со списком.
Как я могу найти ссылку на соответствующее поле со списком у этого слушателя?
Ответ №1:
Это то, что я нашел, что отвечает на мой вопрос.
Из 2-го аргумента прослушивателя «click» мы получаем целевой элемент события щелчка. Затем мы можем перейти к его родительскому элементу boundlist, используя класс .x-boundlist, получить его компонент и, наконец, перейти к combobox через его недокументированное свойство pickerField или его метод getBubbleTarget().
click:{
element:'el',
fn: function(ev, target) { //listener
var el= Ext.get(target),
boundList_el, boundList, combobox;
boundList_el= el amp;amp; el.findParentNode(".x-boundlist");
boundList= boundList_el amp;amp; Ext.getCmp(boundList_el.id);
combobox= boundList amp;amp; boundList.getBubbleParent();
//Do something with the combobox, like changing its value
}
Ответ №2:
Поскольку настроенное содержимое списка со списком было определено с помощью listConfig, а его click
прослушиватель был определен через конфигурацию слушателей, this
относится к элементу boundList в области listener
. Более простой способ достичь того же результата:
click:{
element:'el',
fn: function(ev, target) { //listener
var boundList= Ext.getCmp(this.id),
combobox= boundList amp;amp; boundList.getBubbleParent();
//Do something with the combobox, like changing its value
}