ExtJS 3.4,使用远程模式在组合(i.e.Ext.form.ComboBox)搜索期间删除空格
ExtJS 3.4, remove white spaces during combo(i.e.Ext.form.ComboBox) search using remote mode
我正在使用 extJS 3.4。有一个组合(即Ext.form.ComboBox)具有远程搜索(即模式是'remote')。当我输入搜索文本并在末尾添加 space 时,space 附加 text/string 传递给 API,这会导致错误的响应数据,因此我必须对其进行限制前端。
有没有办法从搜索字词中删除白色 spaces?
这是我的组合框代码:
var productCombo = new Ext.form.ComboBox({
fieldLabel: 'Product',
name: 'product',
lazyRender: true,
store: productSearchStore,
triggerClass: 'x-form-search-trigger',
pageSize: 100,
typeAhead: true,
queryParam: 'term',
mode: 'remote',
minChars: 2,
forceSelection: true,
width: 400,
displayField: 'display',
valueField: 'id',
listWidth: 500
});
这是我的店铺如下:
var productSearchStore = new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({
method: 'GET',
url: 'my API url here',
restful: true
}),
root: 'data',
defaultParamNames : {
start : 'offset',
limit : 'limit',
sort : 'sort',
dir : 'dir'
},
baseParams: {
'_format': 'json'
},
fields: [
{name: 'productName', type: 'string'},
{name: 'productValue', type: 'string'},
{name: 'productDescription', type: 'string'},
{name: 'id', type: 'integer'},
{name: 'productNumber', type: 'string'},
{name: 'productSection', type: 'string'}
]
});
最后,我设法解决了这个问题。向 productSearchStore 添加了一个侦听器,并且在 "beforeload" 函数内部需要 trim 术语(参数)如下:
listeners: {
'beforeload': function (store) {
store.baseParams.term = store.baseParams.term.trim();
}
}
请使用更新后的商店代码查找工作示例,如下所示:
var productSearchStore = new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({
method: 'GET',
url: 'my API url here',
restful: true
}),
root: 'data',
defaultParamNames : {
start : 'offset',
limit : 'limit',
sort : 'sort',
dir : 'dir'
},
baseParams: {
'_format': 'json'
},
fields: [
{name: 'productName', type: 'string'},
{name: 'productValue', type: 'string'},
{name: 'productDescription', type: 'string'},
{name: 'id', type: 'integer'},
{name: 'productNumber', type: 'string'},
{name: 'productSection', type: 'string'}
],
listeners: { //need to add this code
'beforeload': function (store) {
store.baseParams.term = store.baseParams.term.trim();
}
}
});
我正在使用 extJS 3.4。有一个组合(即Ext.form.ComboBox)具有远程搜索(即模式是'remote')。当我输入搜索文本并在末尾添加 space 时,space 附加 text/string 传递给 API,这会导致错误的响应数据,因此我必须对其进行限制前端。
有没有办法从搜索字词中删除白色 spaces?
这是我的组合框代码:
var productCombo = new Ext.form.ComboBox({
fieldLabel: 'Product',
name: 'product',
lazyRender: true,
store: productSearchStore,
triggerClass: 'x-form-search-trigger',
pageSize: 100,
typeAhead: true,
queryParam: 'term',
mode: 'remote',
minChars: 2,
forceSelection: true,
width: 400,
displayField: 'display',
valueField: 'id',
listWidth: 500
});
这是我的店铺如下:
var productSearchStore = new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({
method: 'GET',
url: 'my API url here',
restful: true
}),
root: 'data',
defaultParamNames : {
start : 'offset',
limit : 'limit',
sort : 'sort',
dir : 'dir'
},
baseParams: {
'_format': 'json'
},
fields: [
{name: 'productName', type: 'string'},
{name: 'productValue', type: 'string'},
{name: 'productDescription', type: 'string'},
{name: 'id', type: 'integer'},
{name: 'productNumber', type: 'string'},
{name: 'productSection', type: 'string'}
]
});
最后,我设法解决了这个问题。向 productSearchStore 添加了一个侦听器,并且在 "beforeload" 函数内部需要 trim 术语(参数)如下:
listeners: {
'beforeload': function (store) {
store.baseParams.term = store.baseParams.term.trim();
}
}
请使用更新后的商店代码查找工作示例,如下所示:
var productSearchStore = new Ext.data.JsonStore({
proxy: new Ext.data.HttpProxy({
method: 'GET',
url: 'my API url here',
restful: true
}),
root: 'data',
defaultParamNames : {
start : 'offset',
limit : 'limit',
sort : 'sort',
dir : 'dir'
},
baseParams: {
'_format': 'json'
},
fields: [
{name: 'productName', type: 'string'},
{name: 'productValue', type: 'string'},
{name: 'productDescription', type: 'string'},
{name: 'id', type: 'integer'},
{name: 'productNumber', type: 'string'},
{name: 'productSection', type: 'string'}
],
listeners: { //need to add this code
'beforeload': function (store) {
store.baseParams.term = store.baseParams.term.trim();
}
}
});