ExtJs Store中没有触发回调

时间:2010-12-27 23:36:21

标签: javascript javascript-events extjs

我有以下代码,但它无效。 callback永远不会触发,负载监听器也是如此。

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
         }
     }
});

1 个答案:

答案 0 :(得分:4)

你的读者定义对我来说看起来不正确:是“{} ['aaa','bbb','ccc']”有点不错?

无论如何,这段代码适用于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));
            }   
        }   
    }   
}); 

它与'/ your / url /'服务器调用返回的以下json字符串一起使用:

{
    "rows": [
        {
            "id": 17, 
            "field1": "Emiliano", 
            "field2": 1 
        }, 
        {
            "id": 18, 
            "field1": "Luca", 
            "field2": 3 
        }         
    ], 
    "total": 2
}
  • 不要混淆加载方法和 加载事件;

  • 不要忘记'root'参数 读者定义(实际上是 没有必要进行'测试 好的'字符串打印,但没有它 你不会得到的印刷品 for loop)