AMP By Example 网站上有一个很好的示例https://ampbyexample.com/advanced/linked_dropdowns/并且效果很好,但是我正在尝试了解如何使其更通用并且有两个以上的下拉菜单并且我正在寻找很难找到正确的语法来操作 AMP.setState。
在示例中
<amp-list width="auto"
height="25"
layout="fixed-height"
src="https://ampbyexample.com/json/linked_dropdowns.json">
<template type="amp-mustache">
<label for="country">Country:</label>
<select id="country"
on="
change:
AMP.setState({
cities: dropdown.items[0].countries.filter(x => x.name == event.value)[0]
})">
<option value="">Choose a country</option>
{{#countries}}
<option value="{{name}}">{{name}}</option>
{{/countries}}
</select>
</template>
</amp-list>
<amp-list width="auto"
height="25"
layout="fixed-height"
[src]="cities || 'https://ampbyexample.com/json/linked_dropdowns.json'"
src="https://ampbyexample.com/json/linked_dropdowns.json">
<template type="amp-mustache">
<label for="city">City:</label>
<select [disabled]="!cities"
disabled
id="city">
{{^cities}}
<option value=""></option>{{/cities}} {{#cities.0}}
<option value="">Choose a city</option>{{/cities.0}} {{#cities}}
<option value="{{.}}">{{.}}</option>{{/cities}}
</select>
</template>
</amp-list>
<amp-state id="dropdown"
src="https://ampbyexample.com/json/linked_dropdowns.json"></amp-state>
它获取下拉列表的结果并使用它在 setState of city 中创建一个新元素,然后在下一个 amp-list 中使用该元素。
我无法从代码和描述中得知如何重复此操作,以便在选择第二个元素时允许进一步选择(进行子选择)。
元素:
on="change:AMP.setState({cities: dropdown.items[0].countries.filter(x => x.name == event.value)[0]})"
和
<amp-list width="auto"
height="25"
layout="fixed-height"
[src]="cities || 'https://ampbyexample.com/json/linked_dropdowns.json'"
src="https://ampbyexample.com/json/linked_dropdowns.json">
有效,但没有解释正在发生的事情以及如何使用它来获取第二个结果并提取更多选项。
任何人对如何使它起作用有任何想法或例子吗?