Как скрыть содержимое list при первом показе?

Мне нужно показывать в list только отфильтрованное содержимое. Реализовал вот так:
https://snippet.webix.com/h2vaztjh
как сделать чтобы при первом отображении листа ничего не показывало?
Работаю с jet 1.0, пробовал вставить в $oninit, не получилось. Пытался в onAfterRender засунуть фильтр по id = 0, уходит в клинч

Comments

  • Загрузка содержимого в datacollection происходит с сервера, асинхронно, здесь добавление только для примера.
    Мне не подойдет предложенный Вами вариант(((

  • Спасибо!
    Пока выкрутился через

    '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/764gp53a

  • Извините, что наплодил тем по этому поводу.
    Посмотрите на это решение, оно правильное?
    https://snippet.webix.com/64rh07eg

  • Небольшое обновление по теме: https://snippet.webix.com/8id3tewn

    Объявление в листе data:collection равноценно вызову метода sync.
    Вызвав его в явном виде, можно использовать callback с нужной операцией над данными, пришедшими в лист (фильтрацией, группировкой и т.д.). Такой callback вполне можно переопределять под любые условия.

    attachEvent в такой записи - не очень безопасное решение, т.к. пока коллекция существует, обработчиков на одно её событие может быть задано бесконечно много, если их не разрушать.
    Вызываются эти обработчики в порядке объявления, что приведёт к множеству ненужных фильтраций (при этом будет виден результат только последней).

  • Очень круто, спасибо!!!

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!