Проблема объема Ext JS - PullRequest
       0

Проблема объема Ext JS

2 голосов
/ 25 мая 2011

Это старый код, но в любом случае ...

Я пытаюсь отфильтровать магазин и прослушать событие в поле со списком, чтобы я мог его обновить. Мое событие doQuery не сработало (ну, на самом деле оно сработало, но вернуло случайные наборы результатов, оставив общее ощущение недосмотра)

    config.store.filterBy(function Filter(record){
    //this works
        if (record.data.field != ""){
            return true;
        }
        else {return false;}
    });

Однако это не приводит к автоматическому обновлению комбинированного списка. Поэтому я пробовал различные версии

    cbx = new Ext.getCmp(this);     
    debugger; //scope right here    
    this.getStore().on("datachanged",function refresh(){
         cbx.reset();// store's scope
    });

Но сфера действия cbx всегда кажется хранилищем, а не списком.

У кого-нибудь есть какие-либо подсказки, как сделать добавление указанного слушателя для события изменения данных в хранилище в comboBox?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Область по умолчанию для обратного вызова события - это объект, который вызвал событие. В этом случае это будет магазин. Третий параметр метода on () позволяет переопределить область. Установите третий параметр на this и все готово.

Из документации (3.x и 4.x):

on( String eventName, Function handler, [Object scope], [Object options] )

Так что-то вроде этого должно сработать:

this.getStore().on("datachanged", function refresh() {
     cbx = Ext.getCmp(this);
     cbx.reset();
}, this); // <-- Provide scope for the callback function
0 голосов
/ 26 мая 2011

Вы всегда можете установить область действия функции в ExtJS (я предполагаю, что вы используете ExtJS 3.x) с помощью Function.createDelegate.

this.getStore().on("datachanged",function() {
     cbx.reset();
}).createDelegate(this);

Хотя из предоставленного вами примера кода я не уверен, в чем проблема, поскольку cbx.reset () не должно иметь проблем с областью действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...