我有一个带有一些记录的网格面板。但是这个网格面板的元素是子元素。因此,当我在网格中创建新记录或更新现有记录时,我想将额外的参数作为父 ID 发送到服务器端(父是表的一个)。我正在使用直接商店。
我知道,有远程过滤器,但似乎它们仅在读取操作时发送,而不是在创建或更新时发送。
如果要发送额外参数,请使用代理上的 extraParams 属性
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.proxy.Server-cfg-extraParams
发送 extraParams 不仅限于读取操作(创建、销毁、更新)
我扩展了
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'
额外参数:
Object4 将包含在每个请求中的额外参数。具有相同名称的参数的单个请求将在它们发生冲突时覆盖这些参数。
var store = Ext.create('Ext.data.Store', {
// destroy the store if the grid is destroyed
autoDestroy: true,
model: 'Plant',
proxy: {
extraParams: {name: 'dfds'}, // to send extra parmas
...
}
});