2015-09-23 26 views
1

Компонент Ext.form.field.ComboBox, сконфигурированный с запросомMode «remote» и forceSelection true, автоматически очищает свое поле ввода после поиска в магазине.ExtJS ComboBox (сконфигурированный с помощью queryMode remote и forceSelection true) автоматически очищает поле ввода

{ 
    xtype: 'combobox', 

    fieldLabel: 'State', 

    forceSelection: true, 
    queryMode: 'remote', 
    displayField: 'name', 
    valueField: 'id', 
    typeAhead: true, 
    minChars: 0, 

    store: { 
     model: 'ComboTest.State', 
     pageSize: 100, 

     proxy: { 
      type: 'ajax', 
      url: 'states.js', 
      reader: { 
       type: 'json', 
      } 
     } 
    }, 

    allowBlank: false 

} 

Вы можете попробовать эту скрипку: https://fiddle.sencha.com/#fiddle/uaq

Вставка, например, «ш», то выпадающий выбирает «Вашингтон», а затем перейти на вставке «у» (например, вы хотите «Вайоминг») , на этом этапе все очищается.

Я делаю что-то неправильно или это ошибка?

ответ

1

Это общая ошибка, которая была в ExtJS 5, и я предполагаю, что присутствует в ExtJS 6.

Вы можете изменить поведение COMBOBOX:

Ext.define('overrides.form.ComboBox', { 
    override: 'Ext.form.ComboBox', 
    onLoad: function (store, records, success) { 
     var me = this, 
     needsValueUpdating = !me.valueCollection.byValue.get(me.value); 
     if (success && needsValueUpdating && !(store.lastOptions && 'rawQuery' in store.lastOptions)) { 
      me.setValueOnData(); 
     } 
    }, 
    beforeBlur: function() { 
     var me = this; 
     if (me.getRawValue().length === 0 || (me.getValue() == null && this.forceSelection)) { 
      me.reset(); 
      me.lastSelection = []; 
     } 
     me.callParent(arguments); 
    } 
}); 
Смежные вопросы