Store.sync()会丢失extraParams

时间:2015-05-04 13:34:26

标签: extjs5

我有treeStore和extraParams

proxy: {
   extraParams: {hierarchy_id: '5'},
   api: {   
      update: jsonrpc.dim_hier.modifyData,
      read: jsonrpc.dim_hier.getData,
      create: jsonrpc.dim_hier.addData,
      destroy: jsonrpc.dim_hier.deleteData
  }
}

但store.sync()不向服务器发送此extraParams。 我试着像这样发送param

component.getStore().getProxy().setExtraParam(  
 'hierarchy_id', hierarchy_id);
component.getStore().sync();

和这个

component.getStore().sync({
  params :{
    hierarchy_id: hierarchy_id}
});

component.getStore().getProxy().setExtraParams({
  hierarchy_id: hierarchy_id
});
component.getStore().sync();

但这一切都不起作用

我做错了什么? 感谢您的帮助

3 个答案:

答案 0 :(得分:0)

在方法doRequest(Ext.data.proxy.Direct)

if (action === 'read') {  
  params = request.getParams();        
} else {          
  params = request.getJsonData();        
}

我像这样重写这个方法

params = request.getParams();
if (action !== 'read') {            
  params.rows = request.getJsonData();        
}}

答案 1 :(得分:0)

试一试:

var store = component.getStore();
Ext.apply(store.proxy, {
    extraParams: {
        hierarchy_id: hierarchy_id
    }
});

答案 2 :(得分:0)

发送extraParams不仅仅是阅读操作(创建,破坏,更新)

我延长了

  

Ext.data.proxy.Direct

并覆盖

  

doRequest

它就像一个魅力。

使用ExtJs 4.1.1

原始代码是:

if (operation.action == 'read') {
            // We need to pass params
            method = fn.directCfg.method;
            args = method.getArgs(params, me.paramOrder, me.paramsAsHash);
        } else {
            args.push(request.jsonData);
        }

我把它改为:

    method = fn.directCfg.method;
    args = method.getArgs(params, me.paramOrder, me.paramsAsHash);

    if(operation.action !== 'read'){
         args.push(request.jsonData);
    }

从这里接受了这个想法https://www.sencha.com/forum/showthread.php?282879-ExtraParams-Store-Create

注意:您的商店将拥有您在所创建的类的别名上放置的代理。您的别名将类似于alias : 'proxy.mycompanydirect',那么您的商店将拥有代理类型'mycompanydirect'

相关问题