2013-03-27 11 views
6

io carico mio deposito come segue:ExtJS Conservare problema del carico di callback

store.load({ 
     params:{paramMap}, 
     callback : function(records, options, success) { 
      if (success) { 
       var form = formPanel.getForm(); 
       var jsonStr = Ext.JSON.encode(records[0].raw); 
       var jsonObj = Ext.JSON.decode(jsonStr); 
       form.loadRecord(jsonObj); 
      } 
     } 
    }); 

Il fatto è che voglio solo questa chiamata di nuovo a fuoco la prima volta che il negozio viene caricato. Voglio rimuoverlo dopo di ciò in modo che quando ricarico o carichi nuovamente il negozio non richiami più questa richiamata.

Qualsiasi idea, ho cercato di ottenere la richiamata nella configurazione opzioni, ma questo non sembra funzionare.

risposta

14

Non sono proprio sicuro di quale sia il problema. Il callback verrà richiamato solo quando lo store viene caricato con il callback.

store.load({callback:myCallback}); 
//callback will be called 
store.load(); 
//callback will not be called 

Se si vuole fare qualcosa una volta si potrebbe voler utilizzare un listener con un solo set su true. Gli ascoltatori invece dei callback sono il mio modo preferito.

store.on('load', onStoreLoad, this, {single:true}); 

Il callback argomenti della funzione API è leggermente diverso da un ascoltatore carico, controllare la documentazione per vedere.

+0

Sei corretto. Mi sono reso conto dopo aver inserito un ascoltatore di beforeload nel negozio. Che in realtà stavo chiamando la ricarica che utilizza gli stessi parametri della chiamata originale che includeva la mia callback. Quindi lo cambio per chiamare il carico. Grazie – codemonkeyww

+0

Potrebbe anche essere necessario passare l'ambito nella prima chiamata: store.load ({callback: myCallback, scope: this}); –