Extjs success вызывается дважды, и, следовательно, событие change также связывается дважды - PullRequest
1 голос
/ 17 мая 2011
Ext.define('js.custom.filterbar',{
    extend: 'Ext.Component',
    alias: 'widget.FilterBar',
    onRender: function(){
        alert("in onrender filterbar");
        var me =this;
        me.callParent(arguments);
        me.el.load({
            url: '/TRIFOLD/jsp/filterBar.jsp',
            failure: function (response) {
                alert("fail");
            },
            success: function(response){
                Ext.Function.defer(me.addStoreListeners, 50);
            }
            });
         },
        addStoreListeners : function(){
            Ext.get('store').on({
                change: function(){
                    alert("change");
                    var floorplanObj = Ext.create('js.custom.floorplan');
                    floorplanObj.getRequestParameters();
                }
            });
        }
    });

В приведенном выше коде успех el.load запускается дважды, и, следовательно, мои слушатели также связываются дважды.Таким образом, при замене комбинированного списка предупреждение («изменение») приходит дважды.Пожалуйста, расскажите, что я делаю не так.

1 Ответ

1 голос
/ 26 апреля 2012

У меня была та же проблема - хотя у меня нет решения типа патча, которое вы можете применить к классам Ext, у меня есть (хакерское) решение, которое работает для меня (ExtJS 4.0.7, кстати))

Ext.get('someEl').load({
    url: '/some/content.php',
    success: function (resultOrEvent){
        if(resultOrEvent.hasOwnProperty('request'))
        {
           // Do your post-load stuff here
        }
    }
});

Я понятия не имею, почему это стреляет дважды, но это довольно раздражает.То, что я вижу в консоли для 'resultOrEvent', это то, что я получаю ожидаемый объект запроса в первый раз, а второй раз получаю объект типа Ext.ElementLoader

.исправить это (если это проблема), и я обязательно отправлю ответ, если найду его.

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