ExtJs动态存储失败的调用句柄

时间:2015-01-21 13:54:33

标签: javascript ajax extjs store

我有一个clasic商店

Ext.define('xxx.store.Search', {
    extend: 'Ext.data.Store',
    model: 'xxx.model.Search',
    requires: ['xxx.data.xxxx'],
    proxy:
            {
                type: 'xxxxx',
                digSearchUrl: {
                    initRequest: 'ajax/xxx/xxx/xx',
                    pollRequest: 'ajax/xxxx/xxxx/xxxxxx'
                }
            },
    autoLoad: false,
    defaultSortDirection: 'DESC'
});

现在我经常做这样的商店负载:

   this.getStore('Search').load({
        digSearchCfg: {
            xxx: sid,
            xxx: xxxx
        }
    });

我知道我可以像这里一样使用标准的approch: Attempting to load Ext store with JSON data from AJAX request returns error 但我宁愿在它自己的商店中定义错误处理程序。那可能吗?

1 个答案:

答案 0 :(得分:2)

如果您想捕获并处理Ajax请求异常,只需向Ajax代理添加一个Exception监听器,如下所示:

var store = Ext.create('Ext.data.JsonStore', {
        storeId: 'simpsonsStore',
        fields: ['name', 'email', 'phone'],
        autoLoad: true,
        proxy: {
            type: 'ajax',
            url: 'data2.json',
            reader: {
                type: 'json',
                rootProperty: 'characters'
            },
            listeners: {
                exception: function(proxy, response, operation, eOpts ) {
                    console.log("EXCEPTION CAUGHT!");
                }
            }
        },
        listeners: {
            load: function() {
                console.log(this);
            }
        }
    });

您可以看到演示小提琴here。 data1.json将工作,并将商店对象记录到控制台。 data2.json将记录' EXCEPTION CAUGHT!'到控制台。

以下是Ajax proxy的文档以供参考。