2012-11-19 13 views
6
this.loadSmt = function(argPanel) 
{ 
    this.store1 = new Ext.data.JsonStore({ 
     url    : 'URL1', 
     totalProperty : 'total', 
     successProperty : 'success', 
     root   : 'root1', 
     fields   : [ 
          {name: 'data1'}, 
          {name: 'data2'} 
         ] 
    }); 

    this.store2 = new Ext.data.JsonStore({ 
     url    : 'URL2', 
     totalProperty : 'total', 
     successProperty : 'success', 
     root   : 'root2', 
     fields   : [ 
          {name: 'data21'}, 
          {name: 'data22'}, 
          {name: 'data23'}, 
          {name: 'data24'}, 
          {name: 'data25'} 
         ] 
    }); 

    this.store1.on('beforeload', function() { 
     this.store1.baseParams = { 
      argID: myID 
     }; 
    }, this); 

    this.store2.load({ 
     callback : function() { 
      var graphOwner = argPanel; 
      var graphDataArr = []; 
      var i = 0; 
      this.data.each(function(item, index, totalItems) { 
       var data1 = item.data['data1']; 
        var data2 = item.data['data2']; 

        // create arraystore data for graph 
        var tempArr = new Array(); 
        tempArr.push(data1); 
        tempArr.push(data2); 
        graphDataArr[i] = tempArr; 
        i++; 
      }); 


      this.GraphPanel = this.getMyGraph(graphDataArr); 

     } 
    }, this); 
}; 

this.getMyGraph = function(argGraphValue) 
{ 
    // do something 
} 

quando si esegue questo codice ottengoCome utilizzare la portata in funzione del carico negozio in ExtJS

TypeError: this.getMyGraph is not a function

errore, quando uso

funzione

this.data.each

nel negozio di callback, posso' t utilizzare

this.getMyGraph

funzione. Penso che questo sia un problema di ambito, come posso passare l'ambito come parametro a una funzione o come posso risolvere questo errore?

risposta

7

Il tuo modo di superare l'ambito non è corretto. È necessario utilizzare il parametro scope delle opzioni di caricamento.

this.store2.load({ 
    callback : function(records, operation, success) { 
    ... 
    }, 
    scope: this 
}); 

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.Store-method-load

+0

cambio il mio codice come si mostra. Ora visualizzo l'errore "TypeError: this.data isdefinito". – vtokmak

+2

Cambiare la firma del callback a 'callback: function (record, operazione, successo)' e utilizzare i record this.data invece – Damask

+0

ha funzionato. grazie mille @Prodigy – vtokmak

Problemi correlati