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 
} 

, wenn ich diesen Code ausführen ichWie in ExtJS Umfang in Speicherladefunktion nutzen zu können

TypeError: this.getMyGraph is not a function

Fehler, wenn ich

this.data.each

Funktion im Speicher Rückruf, ich kann‘ t verwenden

this.getMyGraph

Funktion. Ich denke, das ist ein Problem mit dem Bereich, wie kann ich den Bereich als Parameter an eine Funktion übergeben oder wie kann ich diesen Fehler beheben?

Antwort

7

Ihr Weg, den Umfang zu überschreiten, ist nicht richtig. Sie müssen Bereich Parameter der Ladeoptionen verwenden.

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

ich den Code ändern, wie es Ihnen zeigen. Jetzt bekomme ich 'TypeError: this.data is undefined' Fehler. – vtokmak

+2

Ändern Sie die Callback-Signatur in 'Callback: function (records, operation, success)' und verwenden Sie records this.data anstelle von – Damask

+0

. thx viel @ Prodigy – vtokmak