ExtJS 3.4, убрать пробелы во время комбинированного поиска (например, ext.form.ComboBox), используя удаленный режим - PullRequest
0 голосов
/ 28 июня 2018

Я использую extJS 3.4. Существует Combo (то есть Ext.form.ComboBox), имеющий удаленный поиск (т.е. режим «удаленный»). Когда я ввожу поисковый текст и добавляю пробел в конце, к API добавляется пробел с добавленным текстом / строкой, что приводит к неверным данным ответа, поэтому я должен ограничить его от внешнего интерфейса.
Есть ли способ удалить пробелы из условия поиска?

Вот мой код со списком:

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'}
  ]
});

1 Ответ

0 голосов
/ 10 июля 2018

Наконец-то мне удалось решить проблему. Добавлен прослушиватель для productSearchStore, и внутри функции «beforeload» необходимо обрезать термин (param) следующим образом:

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();
    }
  }
});
...