Если вы хотите случайным образом отображать данные в репитере, не используйте набор данных. Запрашивайте коллекцию базы данных напрямую с помощью Wix Data API и вставляйте значения в репитер. не забудьте изменить идентификатор коллекции заполнителей, указанный выше, на фактический идентификатор коллекции базы данных. Как вы можете видеть в приведенном выше коде, я получаю элементы из базы данных и вызываю функцию перемешивания, которая рандомизирует ваш массив, как показано ниже.
function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
После перемешивания моего массива я устанавливаю данные повторителей на перетасованный массив. Мне также нужно настроить ретранслятор для отображения значений, поэтому мы используем для этого onItemReady (), как показано ниже.
export function repeater1_itemReady($item, itemData, index) {
$item("#name").text = itemData.name;
$item("#number").text = itemData.number;
$item("#website").text = itemData.website;
}
В приведенном выше коде я создал функцию onItemReady из панели свойств. Вам нужно будет изменить все идентификаторы элементов на свои собственные и настроить код в соответствии с вашими потребностями.
Отображается только 1 элемент:
Заполнится приведенный выше код повторитель со всеми элементами (в случайном порядке), но поскольку вам нужен только один элемент за раз, мы просто выбираем первый элемент для отображения, внося небольшое изменение в оператор .then () нашего wixData.query ()
$w("#repeater1").data = [random[0]];