首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ExtJs4 -存储baseParams配置属性?

ExtJs4 -存储baseParams配置属性?
EN

Stack Overflow用户
提问于 2011-05-19 23:19:51
回答 3查看 33.8K关注 0票数 16

在extjs3.x中,我使用stores的baseParams配置属性来指定用于加载存储的参数。

这个属性在extjs 4中已经不存在了,我应该怎么做来代替它呢?

另外,在extjs3中,我可以通过使用代理method配置属性来指定存储代理是GET还是POST方法。我应该怎么做而不是这样呢?

我的ExtJs3代码->

代码语言:javascript
复制
   var store = new Ext.data.JsonStore({
        root: 'Data',
        baseParams: {
           StartDate: '',
           EndDate: '''
        },//baseParams
    proxy: new Ext.data.HttpProxy({
        url: 'Time/Timesheet',
        method: 'POST'
    })//proxy
});//new Ext.data.JsonStore
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-19 23:50:30

您需要使用'extraParams‘代理属性来代替Ext3中的baseParams代理属性。ExtJS 4中的等效JsonStore如下所示:

代码语言:javascript
复制
Ext.define('YourModel', {
    extend: 'Ext.data.Model',
    fields: ['field1', 'field2']
}); 

var store = new Ext.data.Store({
    model: 'YourModel',
    proxy: {
        type: 'ajax',
        url : 'Time/Timesheet',
        root: 'Data',
        extraParams: {
            StartDate: '',
            EndDate: ''
        }
    }
});

据我所知,HTTP传输方法是根据您要完成的任务,根据RESTful原则自动设置的。例如,如果加载存储,则使用GET请求;创建新记录时使用POST,等等。

但是,如果需要,您可以通过覆盖代理的actionMethods属性来覆盖此属性:

代码语言:javascript
复制
var store = new Ext.data.Store({
    model: 'YourModel',
    proxy: {
        type: 'ajax',
        url : 'Time/Timesheet',
        root: 'Data',
        actionMethods: {
            read: 'POST'
        },
        extraParams: {
            StartDate: '',
            EndDate: ''
        }
    }
});
票数 29
EN

Stack Overflow用户

发布于 2012-12-30 20:43:05

proxy额外参数的问题: proxy对于使用此代理创建的所有商店都是通用的!示例:

代码语言:javascript
复制
var countries1, countries2;
countries1 = Ext.create("MyApp.store.Countries");
countries1.getProxy().setExtraParam("countriesId", 1) // add parameter 'countriesId' = 1
countries1.load();
countries2 = Ext.create("MyApp.store.Countries");
countries2.getProxy().setExtraParam("countriesId", 2) // add parameter 'countriesId' = 2
countries2.load({
    callback: function(){
        countries1.load(); // 'countriesId' is no more 1, but 2 !!!
    }
});    

我建议你创建自己的存储类来实现基本参数,如果你想在调用同一类型的几个存储之前设置参数。

代码语言:javascript
复制
Ext.define("MyStore",{
    extend: "Ext.data.Store",
    baseParams: null,
    /**
     * add base parameter to store.baseParams
     * @param {Object} key/value object: {key: value}
     */
    addBaseParam: function(obj){
        Ext.apply(this.baseParams, obj);
    },
    /**
     * add several base parameters to store.baseParams
     * @param {Array}: array of key/value object: [{key1: value1, key2: value2,...}]
     */
    addBaseParams: function(objects){
        var me = this;
        if (Ext.isArray(objects)){
            Ext.each(objects, function(obj){
                me.addBaseParam(obj);
            })
        } else if (objects){
            me.addBaseParam(objects);
        }
    },
    /**
     * reset base parameters
     */
    resetBaseParams: function(){
        this.baseParams = {};
    },
    /**
     * constructor
     * @param {object} config
     */
    constructor: function(config) {
        var me = this;
        // manage base params
        me.baseParams = me.baseParams || {};
        // call parent
        me.callParent(arguments);
    },
    /**
     * override load method to add base params to request params
     * @param {Object} options
     */
    load: function(options){
        var me = this;
        options = options || {};
        options.params = options.params || {};
        Ext.applyIf(options.params, me.baseParams);
        me.callParent([options]);
    }
});
票数 8
EN

Stack Overflow用户

发布于 2011-10-19 03:54:43

代码语言:javascript
复制
var DataStore = new Ext.data.Store({
model: 'TestItem',
id: 'DataStore',
 proxy: {
   type: 'ajax',
   url : 'db_categoria.php',            
   actionMethods: {
           read: 'POST'
       },
   extraParams: {
            task: 'LISTING',
       },
   reader: {
    root: 'results',
    totalProperty: 'total',
      id: 'id'
     }
    }
});
DataStore.load({params: {start: 0, limit: 20}});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6060947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档