#BlackLivesMatter
AMP
  • websites

Dynamic Content After User-Interaction

Introduction

This is a sample showing how to show dynamic content after an user interaction: the product availability will be shown based on product selection.

Setup

We use amp-bind to dynamically update the page content.

<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>

How to get dynamic content

By using amp-bind and amp-state with a JSON end-point, a user can get up-to-date data after an interaction. As amp-bind statements are not evaluated on page load, the updated state is only available after an user interaction, which works well for use cases such as specific product availability.

Please select a product
<amp-state id="products"
  src="/static/samples/json/products.json"></amp-state>

<amp-img on="tap:AMP.setState({ productId: 0})"
  src="/static/samples/img/red_apple_1_60x40.jpg"
  width="60"
  height="40"
  role="button"
  tabindex="0">
</amp-img>
<amp-img on="tap:AMP.setState({ productId: 1})"
  src="/static/samples/img/green_apple_1_60x40.jpg"
  width="60"
  height="40"
  role="button"
  tabindex="0">
</amp-img>
<amp-img on="tap:AMP.setState({ productId: 2})"
  src="/static/samples/img/product1_alt1_60x40.jpg"
  width="60"
  height="40"
  role="button"
  tabindex="0">
</amp-img>
<div [text]="products[productId] + ' available'">Please select a product</div>
Daha fazla açıklamaya mı ihtiyacınız var?

Bu sayfadaki açıklamalar tüm sorularınıza yanıt vermiyorsa, özgün kullanım durumunuzu tartışmak üzere diğer AMP kullanıcılarına ulaşmaktan çekinmeyin.

Stack Overflow'a git
Açıklanmayan bir özellik mi var?

AMP projesi, katılımınızı ve katkılarınızı güçlü bir şekilde teşvik ediyor! Açık kaynak topluluğumuzun devamlı bir katılımcısı olacağınızı umuyoruz ancak özel olarak ilgilendiğiniz konularla ilgili tek seferlik katkıları da memnuniyetle karşılıyoruz.

Örneği GitHub'ta düzenle