- Ringkasan
- Contoh sederhana
- Detail
- Status
- Menginisialisasi status dengan amp-state
- Me-refresh status
- Mengubah status dengan AMP.setState()
- Mengubah histori dengan AMP.pushState()
- Ekspresi
- Perbedaan dengan JavaScript
- Contoh
- Fungsi yang diizinkan
- Menentukan makro dengan amp-bind-macro
- Binding
- Atribut khusus elemen
- Debugging
- Peringatan
- Error
- Men-debug Status
- Lampiran
- Spesifikasi <amp-state>
- Pengelompokan XHR
- Atribut
- Penggabungan mendalam dengan AMP.setState()
- Menghapus variabel
- Tata bahasa ekspresi
amp-bind
Description
Allows elements to mutate in response to user actions or data changes via data binding and simple JS-like expressions.
Required Scripts
<script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>
Contoh
amp-autocomplete amp-bind-macro amp-bind-recaptcha amp-bind amp-date-picker amp-geo amp-iframe amp-img amp-lightbox amp-list amp-selector AMP for E-Commerce Getting Started Product Browse Page Product Page Client-side filtering Conditional State Copy Button Currency Conversion Dynamic Accordion Dynamic Content After User-Interaction Linked Dropdowns Multi Page Flow Restrict Duplicate Selection Show More Button Tic-Tac-Toe Image Galleries with amp-carousel Animated Snackbar amp-analytics Checkout Flow Hotel Shopping Cart Favorite Button Paged List SeatMap SeatMap Multiple Selection
Menambahkan interaktivitas kustom dengan data binding dan ekspresi.
| Skrip yang Diperlukan | <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script> |
| Contoh | |
| Tutorial | Membuat halaman AMP yang interaktif |
Ringkasan
Komponen amp-bind memungkinkan Anda untuk menambahkan interaktivitas stateful kustom ke halaman AMP melalui data binding dan ekspresi yang mirip JS.
Contoh sederhana
Pada contoh berikut, menge-tap tombol akan mengubah teks elemen <p> dari "Hello World" menjadi "Hello amp-bind".
<p [text]="'Hello ' + foo">Hello World</p>
<button on="tap:AMP.setState({foo: 'amp-bind'})">Say "Hello amp-bind"</button>
Untuk menjaga performa dan menghindari risiko loncatan konten,
amp-bind tidak mengevaluasi ekspresi saat halaman dimuat. Ini berarti elemen visual harus diberi status default dan tidak mengandalkan amp-bind untuk render awal. Bagaimana cara kerjanya?
amp-bind memiliki tiga komponen utama:
- Status: Status JSON lingkup dokumen yang dapat berubah. Pada contoh di atas, status masih kosong sebelum tombol di-tap. Setelah tombol di-tap, statusnya menjadi
{foo: 'amp-bind'}. - Ekspresi: Merupakan ekspresi mirip JavaScript yang dapat merujuk ke state. Contoh di atas memiliki ekspresi tunggal,
'Hello ' + foo, yang menggabungkan literal string'Hello 'dan variabel statusfoo. Ada batas 100 operand yang dapat digunakan dalam sebuah ekspresi. - Binding: Merupakan atribut khusus dari bentuk
[properti]yang menautkan properti elemen ke sebuah expression. Contoh di atas memiliki binding tunggal,[text], yang akan mengubah<p>teks elemen setiap kali nilai ekspresi berubah.
amp-bind memerlukan penanganan khusus untuk memastikan kecepatan, keamanan, dan performa di halaman AMP.
Contoh yang sedikit lebih rumit
<!-- Store complex nested JSON data in <amp-state> elements. -->
<amp-state id="myAnimals">
<script type="application/json">
{
"dog": {
"imageUrl": "/img/dog.jpg",
"style": "greenBackground"
},
"cat": {
"imageUrl":