2010-12-27 10 views
1

Ich habe den folgenden Code, aber es funktioniert nicht. Die callback wird nie ausgelöst und Load Listener.Callback feuert nicht in ExtJs Store

var someDS = new Ext.data.Store({ 
    proxy : new Ext.data.HttpProxy({url : 'someUrl', method : 'GET'}), 
    reader: new Ext.data.JsonReader({} ['aaa', 'bbb', 'ccc']), 
    callback : function(options, success, response) { 
     alert(response); 
     // some code 
    }, 
    listeners: { 
     load : function() { 
      alert("load"); 
      // some code 
     } 
    } 
}); 

Antwort

4

Ihre Leser Definition mich nicht richtig aussehen: der "{} [ 'aaa', 'bbb', 'ccc']" Bit fein?

trotzdem funktioniert dieser Code mit ExtJS 3.2:

var mystore = new Ext.data.Store({ 
    url: '/your/url/', 
    autoLoad: true, 
    reader: new Ext.data.JsonReader({ 
     root: 'rows', 
     fields: [ 'id', 'field1', 'field2' ] 
    }), 
    listeners: { 
     load: function(t, records, options) { 
      console.log('test ok'); 
      for (var i=0; i<records.length; i++) { 
       console.log(String.format('record {0} = {1}', i, records[i].data.id)); 
      } 
     } 
    } 
}); 

es mit dem folgenden JSON-String funktioniert durch den Server-Aufruf zurückgegeben bei '/ Ihrem/url /':

{ 
    "rows": [ 
     { 
      "id": 17, 
      "field1": "Emiliano", 
      "field2": 1 
     }, 
     { 
      "id": 18, 
      "field1": "Luca", 
      "field2": 3 
     }   
    ], 
    "total": 2 
} 
  • verwechseln Sie nicht die Lademethode und das Load-Ereignis;

  • vergessen Sie nicht die ‚root‘ Parameter in den Leser Definition (na ja, eigentlich es nicht notwendig ist, den ‚Test ok‘ string drucken zu lassen, ohne sie jedoch Sie werden die IDs gedruckt von nicht erhalten die für Schleife)