Wix: заполните репитер внешним вызовом API

Я имею в виду следующее видео Как создать веб-приложение с доступом к внешнему API с помощью кода Wix и хотел бы знать, как я буду заполнять повторитель, а не заполнять тег абзаца, как показано в упомянутом выше видео на YouTube.

В основном вот псевдокод того, чего я хотел бы достичь:

If search box is equal to null or empty
    Display all crypto currencie(s)
else
    Display single crypto currency

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

Sam 30.06.2019 08:45

@Sam извините, если я был не очень ясен, однако ваше наблюдение по моей проблеме выше на 100% верно. К сожалению, я пробовал несколько сценариев, чтобы добиться этого, но безрезультатно :-(!

Tim Kruger 30.06.2019 10:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
684
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ввод информации в повторитель не слишком отличается от того, что уже показано в примере. На самом деле, когда поле поиска пусто, API возвращает массив, с которым просто нужно немного поиграться, чтобы заставить его работать с повторителем.

Итак, если вы добавили повторитель с идентификатором repeater1, который содержит текстовый элемент с идентификатором result, вы можете внести следующие незначительные изменения в код страницы. Вам вообще не нужно трогать внутренний код.

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

export function button1_click(event) {
  getCryptoCurrencyInfo($w("#currencyInput").value)
    .then(currencyInfo => {
      // add an _id property to each currency object
      currencyInfo.forEach(item => item._id = item.id);
      // feed the data to the repeater
      $w('#repeater1').data = currencyInfo;
    } );
}

Затем мы можем взять код для заполнения текстового элемента и вставить его в обработчик события repeater1_itemReady. Эта функция будет выполняться один раз для каждого элемента валюты в массиве, переданном свойству ретранслятора data. Убедитесь, что вы используете панель свойств для подключения функции к соответствующему событию повторителя.

export function repeater1_itemReady($item, itemData, index) {
  $item("#result").text = "Name: " + itemData.name + "\n"
    + "Symbol: " + itemData.symbol + "\n"
    + "Rank: " + itemData.rank + "\n"
    + "Price (USD): " + itemData.price_usd + "\n"
    + "Market Capitalization (USD): " + itemData.market_cap_usd + "\n"
    + "Percent Change 1h: " + itemData.percent_change_1h + "\n"
    + "Percent Change 24h: " + itemData.percent_change_24h + "\n"
    + "Percent Change 7d: " + itemData.percent_change_7d;
}

Обратите внимание на два незначительных изменения в коде. Во-первых, мы используем $item вместо $w для выбора текстового элемента. Это выбирает конкретный экземпляр текстового элемента в текущем элементе ретранслятора. Во-вторых, мы используем itemData вместо currencyInfo[0]. Это дает нам конкретные данные, связанные с текущим элементом повторителя.

Большое спасибо, Сэм, я собираюсь попробовать прямо сейчас. Я приму ваш ответ, как только он заработает с моей стороны ;-).

Tim Kruger 02.07.2019 09:48

Другие вопросы по теме