Store.sync() 丢失了额外的参数

  • 本文关键字:参数 sync Store extjs5
  • 更新时间 :
  • 英文 :


我有带有额外参数的树存储

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() 不会向服务器发送这个额外的参数。 我试图像这样发送参数

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();

但这些都不起作用

我做错了什么? 感谢任何帮助

In Method 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();        
}}

试试看:

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

发送额外的参数总是不仅在读取操作(创建、销毁、更新)上

我扩展了

Ext.data.proxy.Direct

和覆盖

做请求

它就像一个魅力。

使用 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'

最新更新