如果这似乎是一个基本的qn,我仍然很习惯AMP和表达式,所以很抱歉!
根据是否设置了状态,我需要为<amp-list [src]>
使用稍微不同的URL。
初始状态:
<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))不匹配。我们建议编写具有匹配默认值的表达式,但是如果有意的话,可以放心地忽略它。
但是,该请求未触发。我在表达上做错了什么还是遗漏了明显的东西?
一吨!
答案 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)'"
>