如何将参数传递给Ext.data.Store?

时间:2012-03-13 05:58:18

标签: extjs

我正在使用以下代码:

var genres1 = new Ext.data.Store({
    reader: new Ext.data.JsonReader({
        fields: ['pincode','place_name'],
        root: 'rows'
    }),
   proxy: new Ext.data.HttpProxy({
        url: 'pointalong.php',
        method: 'GET'
   })
});

但我想将3个参数传递给我的php文件。我应该如何处理?以及我如何获得php文件。

3 个答案:

答案 0 :(得分:17)

有两种可能性。第一个是使用商店baseParams config:

var genres1 = new Ext.data.Store({
    baseParams: {
        param1: 'value1',
        param2: 'value2'
    },
    // ...

第二个是在使用load方法时发送它们:

genres1.load({params: {param2: 'anotherValue'}});
  

注意 params 将覆盖任何同名的 baseParams

因此,如果您使用上面示例中的baseParams设置商店,然后使用带有参数的load商店将请求...?param1=value1&param2=anotherValue


  

...以及我如何获得php文件

通常通过网址参数传递的变量 - 使用$_GET

$param1 = $_GET['param1'];

答案 1 :(得分:14)

我使用它并且效果很好

Ext.define('store.odon.DiagnosticoStore', {
extend : 'Ext.data.Store',
model : 'model.odont.DiagnosticoModel',
    proxy: {
    type: 'ajax',
    api: {
        create: CONTEXT_PATH + '/mvc/odona/crear', 
        read: CONTEXT_PATH + '/mvc/odon/lista',
        update: CONTEXT_PATH + '/mvc/odon/update',
        destroy: CONTEXT_PATH + '/mvc/odon/delete'
    },
    reader: {
        type: 'json',
        root: 'diagnosticos',
        successProperty: 'success'
    },
    writer: {
        type: 'json',
        writeAllFields: true,
        encode: true,
        root: 'diagnosticos'
    }
}
});

分配参数以加载商店

 var storeDiagnostico= getStore(); // Ext.create('store.odon.DiagnosticoStore');
        storeDiagnostico.getProxy().setExtraParam("idOdontologia", value);
        storeDiagnostico.load();

答案 2 :(得分:4)

如果参数的值可能会改变(例如,如果它来自另一个表单字段),那么最可靠的方法是在每次加载存储时在load事件之前应用代理参数,如下所示:

 Ext.create('Ext.data.Store', {
    ...
    listeners:{
        beforeload: function(store){
            var filterText = Ext.getCmp('filterText').value;
            store.getProxy().setExtraParam("filterText", filterText);
        }
    },