Extjs4 之Store使用

2018-08-14  本文已影响0人  小苑小站

store定义

方法一 加载已经有的数据

Ext.define('namespace.DemoStore', {
    extend: 'Ext.data.Store',

    model: 'namespace.DemoModel',

    autoLoad: false,
    data: []
});

方法二 远程加载数据

Ext.define('namespace.DemoStore', {
    extend: 'Ext.data.Store',

    model: 'namespace.DemoModel',
    // 分组
    groupField: 'group',

    autoLoad: false,
    data: []

    // 上传时候携带的参数
    params: {
        para1:'',
        para2:''
    },

    proxy: {
        type: 'ajax',

        headers: { 'Content-Type': 'application/json;charset=UTF-8' },
        url: '请求链接',

        // 设置请求类型
        actionMethods: { read: "POST" },

        reader: {
            type: 'json',
            successProperty: 'status',//值取true或者false
            totalProperty: 'totalcount',
            root: 'data',
            getResponseData: function(response) {
                try {
                    data = Ext.decode(response.responseText);
                    // 根据返回的结果数据处理成model中定义的数据类型结构
                    // do something you want
                    
                    return result;
                } catch (ex) {
                    return this.getError(ex, error, this, response);
                }
            }
        }
    },

    listeners: {
        beforeload: function(store, operation) {
            operation.params = Ext.encode(this.params);
        }
    }
});

store请求数据

方法一:对应于上面store定义的方法一

Ext.Ajax.request({
    url: '请求地址',
    headers: { 'Content-Type': 'application/json;charset=UTF-8' },
    method: 'post',
    scope: this,
    params: Ext.encode(params),// 请求需要携带的参数
    success: function(response, opts) {
        var responseResult = Ext.decode(response.responseText);
        var store = 上述定义的store
        // 中间处理步骤,最终获取到与store中model相匹配的数据格式
        // do something you want
        // 调用如下方法接在数据,第一个参数就是要加载的数据,第二个参数如果是ture则会保留以前的数据,为false则不会保留
        store.getStore().loadData(result, false);
    },
    failure: function() {
        
    },
    callback: function() {
        
    }
});

方法二:对应于上面的store定义的方法二

var store = 上述定义的store
store.load(function(records, operation, success) {
    if (success) {// 判断是否成功
        // do something you want
    }
});
上一篇下一篇

猜你喜欢

热点阅读