得到这样的组合框:
Ext.define('Dropchop.components.form.fields.BaseUnitCombobox', {
extend: 'Ext.field.ComboBox',
alias: 'widget.base-unit-combobox',
store: {
type: 'base-units-store'
},
name: 'baseUnit',
queryMode: 'remote',
queryParam: 'name',
displayField: 'name',
valueField: 'id',
});
带储物:
Ext.define('Dropchop.store.BaseUnitsStore', {
extend: 'Ext.data.Store',
alias: 'store.base-units-store',
model: 'Dropchop.nutril.model.Unit',
autoLoad: false,
proxy: {
url: Ext.manifest.api + '/public/catalog/units',
type: 'ajax',
startParam: '',
pageParam: '',
limitParam: '',
paramsAsJson: true,
actionMethods: {
create: 'POST',
read: 'POST',
update: 'POST',
destroy: 'POST'
},
reader: {
type: 'json',
rootProperty: 'data',
},
extraParams: {
base: true
}
}
});
这是发送到服务器的请求负载:
{"base":true,"name":[null]}
有什么方法可以操纵这个有效负载吗?
我需要的正确有效负载是:
{"base":true,"name":[]}
or {"base":true}
or {"base":true,"name":"hello world"}
一直在商店上尝试使用 beforeload 事件,但名称参数在操作中设置为过滤器,然后该过滤器值设置为数组(如上面的示例)
还有
当我在加载商店之前将值设置为组合时。它触发存储加载,但值不在请求负载中:
{"base":true,"name":[null]}
而不是
{"base":true,"name":["some value I set on combo"]}
这对任何人都有效吗?
任何帮助表示赞赏。
问候
阿曼多
看起来您正在尝试更改发送到后端代码的参数。您注意到的一件事是,您在浏览器网络选项卡上看到的方式与您在后端代码中实际收听的方式不同。
请参阅此处的 Sencha 示例
https://examples.sencha.com/extjs/7.7.0/examples/kitchensink/?classic#remote-combo
您可以根据自己的意愿操作存储 API 参数,因为它是由用户控制而不是完全由框架控制。