Как заполнить html-контент в div из результата json, используя компонент amp-bind
Я пробовал следующее
Результат Json
{
"details":"<h1>Heading</h1><p>Description</p>"
}
<amp-state id="remoteData" src="/api/get-result" >
</amp-state>
<div [text]="remoteData.details"></div>
Теперь его показ, как показано ниже
<div [text]="remoteData.details"><h1>Heading</h1><p>Description</p></div>
HTML-теги перечислены в виде текста. На самом деле результат json исходит из вызова API. Есть ли способ добиться этого.
Я также пытался загрузить его с помощью amp-iframe. Создал дополнительную страницу на сервере и назвал ее с помощью iframe. Содержимое загружается правильно, но я не могу изменить размер div
в зависимости от высоты содержимого, поскольку оба источника одинаковы.
<amp-iframe width="200" id="myframe" height="40" layout="responsive" resizable sandbox="allow-scripts " frameborder="0" src="https://demo.com/api/get-html"></amp-iframe>
скрипт, используемый для динамической установки высоты родительского компонента amp-iframe
<script>
window.parent.postMessage({
sentinel: 'amp',
type: 'embed-size',
height: document.body.scrollHeight
}, '*');
</script>
Используя amp-bind, я не могу отобразить html-контент, используя amp-iframe, я не могу настроить высоту iframe в соответствии с содержимым. Может кто-нибудь помочь, пожалуйста.
Спасибо
1 ответ
Вы можете сделать это с помощью шаблона amp-list / mustache. однако вы все еще ограничены определенной высотой. и вы не можете ввести произвольный HTML. Лучше рендерить контент на стороне сервера.
если вы отформатируете свой JSON так:
{
"items" : [ {
"heading":"Heading",
"description":"Description",
"listItems": ["one", "two", "three"]
} ]
}
Усы шаблон.
<amp-list width="auto" height="50" src="https://myserver/stuff/remoteData.json" max-items="1">
<template type="amp-mustache">
<h1>{{heading}}</h1>
<p>{{{description}}}</p>
{{#listItems}}
<li>{{.}}</li>
{{/listItems}}
</template>
</amp-list>