我有带有额外参数的树存储
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'