Как сделать "окно поиска, которое показывает список динамических опций в соответствии с данными, полученными при вызове get api для входной строки", как select2 в amp mail

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

Я узнал, что amp-autocomplete не работает в amp-email, и я использую этот код. Поэтому, пожалуйста, подумайте об этом и предложите способ решения этой проблемы.

    <div>
      <amp-state id="name"></amp-state>
      <input id="name-input" placeholder="Search name..." on="input-throttled:AMP.setState({ name: event.value })">
      <amp-list layout="fixed-height" height="100" src="https://www.example.com/a/b?q='name'" items=".">
        <template type="amp-mustache">
          <div>{{name}}</div>
        </template>
      </amp-list>
    </div>

Этот код показывает поле ввода, но при записи в него я не могу получить список.

Результат запроса get " https://www.example.com/a/b?q=a" дает данные json, подобные этим [{"id": "1", "name": "abc"}, {"id": "2", "name": "abd"}, ...]

1 ответ

Решение

Вы, кажется, пытаетесь изменить src списка усилителей, но AMP для электронной почты не разрешает привязку к src (также, вам придется использовать [src] вместо src сделать это в AMP в сети).

Одним из вариантов является использование amp-form со скрытым полем ввода, которое вы отправляете сразу после вызова setState:

<div>
  <input id="name-input" placeholder="Search name..." on="input-throttled:AMP.setState({ name: event.value }), suggestions.submit">

  <form id="suggestions" method="get" action-xhr="https://www.example.com/a/b">
    <input type="hidden" name="q" value="" [value]="name">
    <div submit-success>
      <template type="amp-mustache">
        {{#.}}
        <div>{{name}}</div>
        {{/.}}
      </template>
    </div>
  </form>
</div>

Также обратите внимание, что вам не нужно <amp-state> если вы не хотите, чтобы ваш штат по умолчанию.

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