В Ext.js4.1.3, как найти поле со списком, связанное с его внутренним элементом?

#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
    }