2011-05-17 2 views
1
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(); 
       } 
      }); 
     } 
    }); 

Dans le code ci-dessus, le succès de el.load est déclenché deux fois et mes écouteurs sont donc également liés deux fois. Donc onchange de la combobox l'alerte ("change") vient deux fois. S'il vous plaît dites ce que je fais mal.Le succès Extjs est appelé deux fois et l'événement change est également lié deux fois

+0

Veuillez utiliser le code-tag pour formater votre code de manière lisible. Personne ne va lire ce désordre;) – Fge

+0

Pourquoi avez-vous besoin d'ajouter des écouteurs de cette manière? Utilisez-vous ExtJs3 ou 4? S'il vous plaît tag – Dve

+0

J'utilise Extjs 4. mais la chose à noter est le succès est appelé deux fois. Comment l'empêcher de tirer deux fois? – user757586

Répondre

1

J'ai eu le même problème - alors que je n'ai pas de solution de type patch que vous pouvez appliquer aux classes Ext, j'ai une solution (hacky) qui fonctionne pour moi (ExtJS 4.0.7, btw)

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

Je ne sais pas pourquoi cela se déclenche deux fois, mais ça a été plutôt ennuyeux. Ce que je vois dans la console pour 'resultOrEvent' est juste que - la première fois que j'obtiens l'objet de demande attendu, la seconde fois que je reçois un objet de type Ext.ElementLoader

Je suis à la recherche d'une solution pour ce problème (si c'est un problème), et je serai sûr de poster si j'en trouve un.