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

Par*_*ari 11 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'
   })
});
Run Code Online (Sandbox Code Playgroud)

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

Mol*_*Man 17

有两种可能性.第一个是使用商店baseParams配置:

var genres1 = new Ext.data.Store({
    baseParams: {
        param1: 'value1',
        param2: 'value2'
    },
    // ...
Run Code Online (Sandbox Code Playgroud)

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

genres1.load({params: {param2: 'anotherValue'}});
Run Code Online (Sandbox Code Playgroud)

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

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


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

通常通过URL参数传递变量 - 使用$ _GET:

$param1 = $_GET['param1'];
Run Code Online (Sandbox Code Playgroud)

  • @Sudhir如果你使用的是ExtJs 4,你会想要使用"extraParams"配置选项,你将在代理上使用它,而不是商店本身.您使用的是什么版本的ExtJ? (5认同)

Edy*_*rre 15

我使用它,它完美地工作

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'
    }
}
});
Run Code Online (Sandbox Code Playgroud)

分配参数以加载商店

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


Bla*_*ack 5

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

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