WiX - Несоответствие набора данных - PullRequest
0 голосов
/ 19 марта 2019

У меня есть веб-сайт для моего Театрального института, а на домашней странице у меня есть слайд-шоу с двумя повторителями на двух разных слайдах, соединенных с двумя разными наборами данных. Я использую их для отображения информации о состоянии / состоянии из моей базы данных.

Slide1: recentRepeater <-- recentDataset <-- myCollection (For Recent Events)

Slide2: upcomingRepeater <-- upcomingDataset <-- myCollection (For Upcoming Events)

Проблема

Во время загрузки данные dataset2 отображаются в repeater1, т. Е. ПОСЛЕДНИЕ СОБЫТИЯ отображаются в разделе ПРЕДСТОЯЩИЕ СОБЫТИЯ и исправляются после полной загрузки. Будучи первым, что будет показано на сайте, я не хочу, чтобы это испортилось. Это негативно влияет на мой сайт


Как это работает

Я сохранил даты события в базе данных в виде числа в формате YYYYMMDD. Например:

20-April-2019 ---> 20190420

Я правильно подключил наборы данных к элементам повторителя, установил предел результата набора данных 2

Я отсортировал результаты по номеру YYYYMMDD

  • По возрастанию upcomingDataset
  • по убыванию recentDataset

Я сгенерировал номер формата YYYYMMDD для этого дня и отфильтровал результаты, полученные набором данных с помощью функции .setFilter()

$w("#recentDataset").setFilter(wixData.filter()
    .lt("dateNumber", YYYYMMDD_today)
)

$w("#upcomingDataset").setFilter(wixData.filter()
    .ge("dateNumber", YYYYMMDD_today)
)

Как я могу предотвратить это ..?

Заранее спасибо

1 Ответ

1 голос
/ 19 марта 2019

Трудно сказать, что происходит, фактически не играя с вашим сайтом.Я думаю, что оба ваших набора данных связаны с одной коллекцией.Я предполагаю, что проблема в том, что набор данных фильтруется только после загрузки страницы.Вы можете убедиться в этом, переведя консоль в режим подробного просмотра в режиме предварительного просмотра.

Если это действительно проблема, я могу подумать о трех возможных исправлениях / обходных решениях:

  1. Установите фильтр внастройки набора данных вместо того, чтобы устанавливать их программно.(Это самый простой вариант.)
  2. Скрыть ретрансляторы, пока не будут установлены фильтры.(Это что-то вроде хака.)
  3. Сохранить обещания, возвращаемые функциями setFilter, и вернуть их, используя Promise.all() из onReady().(Это самый модный вариант. Я думаю, что он будет работать, но если вам не нужно для программной настройки фильтров, вы могли бы вместо этого сделать вариант 1.)
...