autosuggest exampleに続いて、amp-selector
のプレーンストリングの代わりにオブジェクトを保持して使用する必要があります。トップレベル配列のamp-selectorを使用してアンプバインドで使用するオブジェクトを設定する方法
これはAPIからJSONです:AMPを使用して
[{
"name": "Singapore",
"cityCode": "SIN",
"countryName": "Singapore",
"type": "city"
}, {
"name": "Sinop",
"cityCode": "NOP",
"countryName": "Turkey",
"type": "city"
}, {
"name": "Sinop",
"cityCode": "OPS",
"countryName": "Brazil",
"type": "city"
}]
レンダリング:口ひげのドキュメントではどこにもありません{{.}}
構文についてthis answerへ
<amp-list
class="autosuggest-box"
layout="fixed-height"
height="130"
src="<url>"
id="autosuggest-list"
single-item
items="."
>
<template type="amp-mustache">
<amp-selector
id="autosuggest-selector"
keyboard-select-mode="focus"
layout="container"
on="
select:
AMP.setState({
locationObj: event.targetOption,
showDropdown: false
}),
autosuggest-list.hide"
>
{{#.}}
<div
class="location-item no-outline"
role="option"
tabindex="0"
on="tap:autosuggest-list.hide"
option="{{.}}"
>{{name}}, {{countryName}}</div>
{{/.}}
</amp-selector>
</template>
</amp-list>
感謝。しかし、アンプ・バインドプリントでlocationObj
の分野[object Object]
バインドさと私はlocationObj.name
を使用しようとすると、それはここでは、バインドコードAMPドキュメントがで何かをログに記録する方法を述べるいない
<input
type="text"
class="search-box"
on="
input-debounced:
AMP.setState({
showDropdown: event.value
}),
autosuggest-list.show;
tap:
AMP.setState({
showDropdown: 'true'
}),
autosuggest-list.show"
[value]="locationObj ? locationObj.name : ''"
value=""
required
autocomplete="off"
/>
だnull
を印刷しますコンソールなので、何が設定されているのかが分かりますlocationObj
から{{.}}
'#.'と'/.'がAMPで動作するかどうかは不明です。 '{{。}}'はJSON配列を読み込みます。 JSONキーを特定する必要があるかもしれません。 JSONを子構造体に置くと、親キーを使って配列を呼び出すことができます。 –
@JayGrayはい、 'items'キーに配列を含めるように構造を変更した場合にはうまくいくでしょう。しかし残念ながら、4つの異なるプラットフォームでは、APIをプロダクションで使用することはできません。 – adnanyousafch