Après le autosuggest example, je dois conserver et utiliser un objet au lieu de amp-selector
.Comment définir un objet à l'aide du paramètre amp-selector du tableau de niveau supérieur à utiliser dans le paramètre amp-bind
Ceci est JSON API:
[{
"name": "Singapore",
"cityCode": "SIN",
"countryName": "Singapore",
"type": "city"
}, {
"name": "Sinop",
"cityCode": "NOP",
"countryName": "Turkey",
"type": "city"
}, {
"name": "Sinop",
"cityCode": "OPS",
"countryName": "Brazil",
"type": "city"
}]
rendu en utilisant AMP:
<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>
Merci à this answer pour {{.}}
syntaxe qui est nulle part dans Mustache docs. Cependant, le champ binded de locationObj
en gravures ampère-bind [object Object]
et lorsque je tente d'utiliser locationObj.name
il imprime null
est ici le code de liaison
<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"
/>
AMP Docs ne dit pas un moyen de quoi que ce soit se connecter console donc j'ai une idée de ce qui est en train d'être mis en locationObj
à {{.}}
pas sûr que '#. 'Et'/.' fonctionneront dans AMP. '{{.}}' va lire le tableau JSON. Vous devrez peut-être identifier une clé JSON. Si vous placez votre JSON dans une structure enfant, vous pouvez utiliser la clé parente pour appeler le tableau. –
@JayGray Oui, cela fonctionnerait si nous changeons notre structure pour inclure un tableau dans la clé 'items'. Mais malheureusement, nous ne pouvons pas comme API est consommée en production pour 4 plates-formes différentes. – adnanyousafch