Мне нужно показывать в list только отфильтрованное содержимое. Реализовал вот так:
https://snippet.webix.com/h2vaztjh
как сделать чтобы при первом отображении листа ничего не показывало?
Работаю с jet 1.0, пробовал вставить в $oninit, не получилось. Пытался в onAfterRender засунуть фильтр по id = 0, уходит в клинч
Загрузка содержимого в datacollection происходит с сервера, асинхронно, здесь добавление только для примера.
Мне не подойдет предложенный Вами вариант(((
тогда используйте waitData
https://snippet.webix.com/v925u13v
https://docs.webix.com/api__link__datacollection_waitdata_other.html
Спасибо!
Пока выкрутился через
'onAfterLoad': function(){
this.filter(function(obj){
return false;
});
}
Неправильно?
Сейчас не могу другую проблему решить. Почему в filter() иногда дает пустые значения?
Если я указываю что у ui.list свойство data существующий datacollection, потом делаю list.remove(id), то из исходного dataCollection тоже происходит удаление?
Что делать в этом случае?
Здравствуйте, Роман.
При вызове list.remove(id)
удаление данных из коллекции не происходит. Удаление в коллекции сработает при collection.remove(id)
:
Проверьте snippet (см. консоль):
https://snippet.webix.com/1wbkb1jf
Не могли бы ли вы более детально описать проблему с filter() или прислать snippet?
Спасибо, я уже нашел ошибку)
Не всё так просто. Переделал по другому и теперь при добавлении нового элемента в datacollection фильтр не работает.
https://snippet.webix.com/1wbkb1jf
Решением может показаться применение фильтра после добавления элемента, но в моём случае (когда сохранение идет на сервер) это тоже не работает
Я не нашел никакого события, отвечающего за изменение данных для компонентов типа list, в случае использования datacollection как источника данных.
onAfterLoad, onAfterDelete и т.п. не работают(
Привязываться к событиям коллекции я не могу, так к с одной коллекцией у меня связано несколько UI компонентов и они будут исключать друг-друга
Извините, что наплодил тем по этому поводу.
Посмотрите на это решение, оно правильное?
https://snippet.webix.com/64rh07eg
Небольшое обновление по теме: https://snippet.webix.com/8id3tewn
Объявление в листе data:collection
равноценно вызову метода sync.
Вызвав его в явном виде, можно использовать callback с нужной операцией над данными, пришедшими в лист (фильтрацией, группировкой и т.д.). Такой callback вполне можно переопределять под любые условия.
attachEvent
в такой записи - не очень безопасное решение, т.к. пока коллекция существует, обработчиков на одно её событие может быть задано бесконечно много, если их не разрушать.
Вызываются эти обработчики в порядке объявления, что приведёт к множеству ненужных фильтраций (при этом будет виден результат только последней).
Очень круто, спасибо!!!