Вы можете задать значение через специальное свойство в объекте конфигурации или изменив значение с помощью объекта состояния компонента:
Исходное значение
view:"query",
value:{
"glue": "or",
"rules": [
{
"field": "first_name",
"includes": [
"Diana"
]
},
{
"glue": "and",
"rules": [
{
"field": "age",
"condition": {
"type": "less",
"filter": 45
}
}
]
}
]
}
Related sample: Query: Initialization
Объект value содержит следующие свойства:
Свойство value у Query является реактивным. Это означает, что разработчики могут получать и устанавливать его значение, а также слушать его изменения через состояние компонента:
Чтобы получить свойство value, вызовите метод getState() и обратитесь к свойству "value" полученного объекта:
$$("query").getState().value; // объект с правилами фильтрации или null
Отслеживание изменений
Чтобы отслеживать изменения value, необходимо использовать обработчик $observe через объект состояния:
$$("query").getState().$observe("value", function(value){
// ваш код
});
Related sample: Query: Listening to Changes
Дополнительно можно использовать $observe в тандеме с обработчиком onInit. Код внутри обработчика будет выполнен до инициализации виджета:
webix.ui({
view: "query",
fields: [ /*поля для фильтрации*/ ],
value: { /**правила фильтрации и комбинирования полей*/ },
on: {
onInit: function() {
// "this" указывает на компонент
this.getState().$observe("value", function(value){
// ваш код
});
}
}
});
Это может пригодиться при использовании Query для фильтрации данных.
Чтобы использовать Query для фильтрации данных, нужно получить его вспомогательную функцию, которая реализует логику фильтрации. Это можно сделать с помощью метода getFilterFunction():
$$("query").getFilterFunction();
Метод возвращает функцию, которая объединяет все заданные правила фильтрации.
Можно передать эту функцию в метод filter, который используется компонентами данных, чтобы перебрать их элементы и проверить, соответствуют ли они правилам фильтрации:
webix.ui({
view: "query",
on: {
onChange() {
const filter = this.getFilterFunction();
// data-widget to filter data in
$$("data-widget").filter(filter);
}
}
});
Related sample: Query: Filtering Data
Наверх