Выражение amp-list [src] оценивает, но не запускает сетевой запрос - PullRequest
0 голосов
/ 28 декабря 2018

Я все еще привыкаю к ​​AMP и выражениям, поэтому извиняюсь, если это выглядит как простой qn!

Мне нужно использовать немного другой URL для <amp-list [src]> в зависимости от того, установлено состояние или нет.

  • , если состояние selectedStation.selectedStation является пустой строкой, вызывать deal.json? Country = AMP_GEO (ISOCountry)
  • else, вызывать deal.json? Country = AMP_GEO (ISOCountry)& origin = AMP_STATE (selectedStation.selectedStation)

Исходное состояние:

<amp-state id="selectedStation">
    <script type="application/json">
        {
            "selectedStation": ""
        }
    </script>
</amp-state>

выражение списка усилителей:

<amp-list class="mt1" width="auto" height="150px" layout="fixed-height" 
  [src]="selectedStation.selectedStation == '' ? 'deals.json? 
  country=AMP_GEO(ISOCountry)' : 'deals.json? country=AMP_GEO(ISOCountry)&origin=AMP_STATE(selectedStation.selectedStation)'">

Выражение оценивается, как видно изПредупреждение журнала консоли с использованием режима # development = 1: Значение по умолчанию (пустое) не соответствует первому результату (deal.json? country = AMP_GEO (ISOCountry)) для.Мы рекомендуем писать выражения с соответствующими значениями по умолчанию, но это может быть безопасно проигнорировано, если намеренно.

Однако запрос не выполняется.Я делаю что-то не так с моим выражением или пропускаю что-то очевидное?

Спасибо за тонну!

1 Ответ

0 голосов
/ 02 января 2019

Из amp-bind документация (выделено мое):

Для производительности и во избежание риска неожиданного скачка содержимого amp-bind не оценивает выраженияна странице загрузки .Это означает, что для визуальных элементов должно быть задано состояние по умолчанию, а не полагаться на amp-bind для начального рендеринга.

Другими словами, поскольку вы указали только [src], а не src, src пуст при загрузке страницы и [src] будет оценивать только когда пользователь взаимодействует со страницей.Возможно, вы захотите установить оба из них:

<amp-list
  class="mt1"
  width="auto"
  height="150px"
  layout="fixed-height"
  src="deals.json?country=AMP_GEO(ISOCountry)"
  [src]="selectedStation.selectedStation == '' ? 'deals.json?country=AMP_GEO(ISOCountry)' : 'deals.json? country=AMP_GEO(ISOCountry)&origin=AMP_STATE(selectedStation.selectedStation)'"
>
...