amp-list [src]表达式评估但不触发网络请求

时间:2018-12-28 03:22:08

标签: amp-html

如果这似乎是一个基本的qn,我仍然很习惯AMP和表达式,所以很抱歉!

根据是否设置了状态,我需要为<amp-list [src]>使用稍微不同的URL。

  • 如果状态selectedStation.selectedStation是一个空字符串,请调用Deals.json?country = AMP_GEO(ISOCountry)
  • 否则,致电Deals.json?country = AMP_GEO(ISOCountry)&origin = AMP_STATE(selectedStation.selectedStation)

初始状态:

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

amp-list表达式:

<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模式从控制台日志警告中看到的: 默认值(null)与第一个结果(deals.json?country = AMP_GEO(ISOCountry))不匹配。我们建议编写具有匹配默认值的表达式,但是如果有意的话,可以放心地忽略它。

但是,该请求未触发。我在表达上做错了什么还是遗漏了明显的东西?

一吨!

1 个答案:

答案 0 :(得分:1)

摘自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)'"
>