我有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();
但这一切都不起作用
我做错了什么? 感谢您的帮助
答案 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'