Позвольте мне попытаться объяснить.Сначала прочитайте: sap.ui.model.Filter
Давайте рассмотрим:
new Filter("ProductName", FilterOperator.Contains, sQuery)
Фильтру нужно 3 вещи:
Где искать данные.
Как просматривать данные.
Что посмотретьdata.
Давайте применим это:
Итак, мы создаем фильтр,
, который будет искать свойство ProductName
(в котором хранится название продукта) в нашей модели, которая привязана к нашему списку.
Теперь нужно уметь выглядеть.В основном операции.Эти операции могут быть contains
, equals
, greater than
, less than
и т. Д. Итак, мы говорим,
if ( ProductName.indexOf() > -1 ) {
return ProductName;
}
Что посмотретьдля данных (то, что пользователь вводит в поле ввода поиска).Как вы можете, в приведенном выше коде, indexOf
нужен параметр.sQuery
- это тот параметр.Итак, давайте завершим наш код:
if ( ProductName.indexOf(sQuery) > -1 ) {
return ProductName;
}
Вышеприведенный оператор выполняется один раз для всех элементов модели (подробнее ниже) и, следовательно, всякий раз, когдаПри выполнении вышеуказанного условия этот элемент в возвращаемом элементе связывается со списком.
Здесь необходимо учитывать два момента:
- Мой список привязан к определенному пути.Действительно ли нужно перебрать все данные в модели?Нет. Ему нужен путь в модели, к которому привязан список.Следовательно, нам нужна привязка списка, которая укажет путь.Попробуйте это и посмотрите, сколько информации в магазинах хранится о привязке:
console.log(oList.getBinding("items"));
Если моя модель связана с несколькими списками, должна ли фильтрация в 1 списке влиять на другие места?Нет, только там, где я искал.Следовательно, нам не нужно применять фильтр к модели, но к привязке списка, специфичной для списка.Просто обновите список, который я пытаюсь отфильтровать.Следовательно, мы получаем привязку списка, используя:
oList.getBinding('items')
.
Теперь код: oBinding.filter(aFilter);
.
Это вызов API UI5: Эй, я хочу применить фильтр к этой конкретной привязке списка (показывать только совпадающие элементы).Вот фильтры (массив) в качестве параметра.Затем UI5 выполняет фильтр и обновляет интерфейс.
Надеюсь, это поможет.