Просто отфильтруйте элементы из filterArray
, который содержит оба этих слова
let filterArray = ["Big green bubble", "Red bubble", "A bubble in green", "Small green bubble", "This bubble is green"]
let textString = "green bubble".lowercased()
let words = textString.components(separatedBy: " ")
let results = filterArray.map { [110].lowercased() }.filter { string in words.allSatisfy { string.components(separatedBy: " ").contains([110]) } }
print(results) /* ["Big green bubble", "A bubble in green", "Small green bubble", "This bubble is green"] */
Это, вероятно, потому что при вводе случайных данных в комбинацию они не могут определить местоположение корректного fieldValue каждый раз. Затем это stucks в последнем несуществующем значении.
Попытайтесь установить ComboBox на любое существующее значение (в хранилище данных комбинации) прежде, чем сделать новый setValue () в Вашем datachanged обработчике событий. Или можно попытаться использовать clearValue () метод для сброса предыдущего (неопределенного) valueField.
Там также initList () метод, существующий для сброса комбинации к начальному состоянию.
Править: После некоторого тестирования я нашел что: combo.store.clearFilter (); должен использоваться прежде setValue в обработчике внешних событий.
Во-первых, поле комбинированного списка Ext JS должно автоматически применить значение и дисплей, когда объект выбран, запрещая Вы присвоили хранилище и сказали Расширению, что поле требует значения.
Значение, которое Вы, кажется, просите (CompteurCommunes), не появляется в Ваших определениях читателя, таким образом, это была бы часть записей в хранилище данных.
Какова базовая причина того, почему Вы пытаетесь установить это значение для ComboBox?
Можно взглянуть на hiddenName и hiddenId параметр Ext.form. ComboBox. Если бы Вы устанавливаете значение скрытого поля формы, связанного с полем комбинированного списка затем, поле комбинированного списка представило бы маркировку того значения вместо самого значения.
Это полезно, когда необходимо установить значение в конце сервера и направить пользователя к странице.
Другой полезный метод является selectByValue. Этот метод выбрал бы элемент, который имеет значение, равное передаваемому аргументу.
В Вашем dataChangedListener вместо того, чтобы установить значение поля комбинированного списка, необходимо установить значение скрытое поле формы, связанное с ComboBox. Также после устанавливания значения скрытого поля Вам, возможно, придется запустить selectByValue метод.
Можно взглянуть на документацию API ExtJS для дальнейшей ссылки.
function formatComboBox(value, metaData, record, rowIndex, colIndex, store) {
myStore = Ext.getCmp('myComboBox');
myStore.clearFilter();
var idx = myStore.find('value',value);
return (idx != '-1') ? myStore.getAt(idx).data.label : value;
}