- Pelajari
-
Ekosistem
Pertolongan
Alat
Pustaka Inti
Berita
Daftar Sumber Daya
- Tim
- Dukung Vue
- Terjemahan
Petunjuk
Esensial
- Instalasi
- Perkenalan
- Vue Instance
- Sintaks Templat
- Properti Penghitung (Computed) dan Pengamat (Watchers)
- Kelas and Binding Gaya
- Rendering Bersyarat
- Me-render Daftar
- Penanganan Event
- Form Input Bindings
- Komponen Dasar
Komponen secara mendalam
- Registrasi Komponen
- Props
- Custom Events
- Slot
- Komponen yang Dinamis & Async
- Menangani Kasus Langka
Transisi & Animasi
- Transisi Masuk/Keluar & Daftar Transisi
- Transisi State
Kebergunaan & Komposisi
- Mixins
- Direktif Kustom
- Fungsi Render & JSX
- Plugin
- Filter
Peralatan
- Komponen Berkas Tunggal
- Unit Testing
- Dukungan TypeScript
- Penempatan Produksi
Peningkatan
- Routing
- Pengelolaan State
- Rendering di Sisi Server (SSR)
Internal
- Reaktivitas Secara Mendalam
Migrasi
- Migrasi dari Vue 1.x
- Migrasi dari Vuex 0.6.x ke 1.0
Meta
- Perbandingan dengan Kerangka Kerja yang Lain
- Gabung Komunitas Vue.js!
- Tim Inti Vuejs
Kelas and Binding Gaya
Kebutuhan umum untuk data binding adalah untuk memanipulasi daftar kelas dan gaya inline milik elemen. Karena keduanya adalah atribut, kita bisa menggunakan v-bind untuk menanganinya: kita hanya perlu memperhitungkan string terakhir dengan ekspresi kita. Namun, bermain dengan rangkaian string itu menjengkelkan dan rawan kesalahan. Untuk alasan ini, Vue menyediakan perangkat khusus saat v-bind digunakan untuk class dan style. Selain string, ekspresi juga dapat mengevaluasi objek atau array.
Binding Kelas HTML
Sintaksis Objek
Kita dapat mengoper sebuah objek ke v-bind:class untuk mengubah class secara dinamis
<div v-bind:class="{ active: isActive }"></div>
Sintaksis di atas berarti kehadiran active akan ditentukan oleh nilai kebenaran dari properti data isActive.
Anda dapat memiliki beberapa kelas yang akan saling menggantikan dengan menambahkan lebih banyak field dalam objek. Selain itu, direktif v-bind:class dapat berdampingan dengan atribut class biasa. Seperti pada templat berikut:
<div
class="static"
v-bind:class="{ active: isActive, 'text-danger': hasError }"
></div>
Dan data berikut:
data: {
isActive: true,
hasError: false
}
Akan menghasilkan:
<div class="static active"></div>
Saat isActive atau hasError berubah, daftar kelas akan diperbarui. Sebagai contoh, jika hasError menjadi true, daftar kelas akan menjadi "static active text-danger ".
Objek terikat tidak harus sebaris:
<div v-bind:class="classObject"></div>
data: {
classObject: {
active: true,
'text-danger': false
}
}
Ini akan membuat hasil yang sama. Kita juga bisa bind computed property yang mengembalikan objek. Ini adalah pola umum yang bagus:
<div v-bind:class="classObject"></div>
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
Sintaksis Array
Kita dapat mengoper sebuah array ke v-bind:class untuk menerapkan daftar kelas:
<div v-bind:class="[activeClass, errorClass]"></div>
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
Yang akan menghasilkan:
<div class="active text-danger"></div>
Jika Anda juga ingin mengganti kelas dalam daftar secara kondisional, Anda dapat melakukannya dengan ekspresi ternary:
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>
Ini akan selalu menerapkan errorClass, dan hanya akan menerapkan activeClass ketika isActive bernilai benar.
Namun, ini bisa menjadi sedikit bertele-tele jika Anda memiliki beberapa kelas kondisional. Itu sebabnya juga boleh untuk menggunakan sintaksis objek di dalam sintaksis array:
<div v-bind:class="[{ active: isActive }, errorClass]"></div>
Dengan Komponen
Bagian ini mengasumsikan pengetahuan tentang Vue Components. Silakan lewati dan kembali lagi nanti.
Ketika Anda menggunakan atribut class pada komponen kustom, kelas-kelas itu akan ditambahkan ke elemen root komponen. Kelas yang ada pada elemen ini tidak akan ditimpa.
Misalnya, jika Anda mendeklarasikan komponen ini:
Vue.component('my-component', {
template: '<p class="foo bar">Hi</p>'
})
Kemudian tambahkan beberapa kelas saat menggunakannya:
<my-component class="baz boo"></my-component>
HTML yang ditampilkan akan menjadi:
<p class="foo bar baz boo">Hi</p>
Hal yang sama berlaku untuk binding kelas:
<my-component v-bind:class="{ active: isActive }"></my-component>
Ketika isActive benar, HTML yang ditampilkan akan menjadi:
<p class="foo bar active">Hi</p>
Binding Gaya Sebaris
Sintaksis Objek
Sintaksis objek untuk v-bind:style cukup mudah - terlihat hampir seperti CSS, tetapi itu adalah objek JavaScript. Anda dapat menggunakan camelCase atau kebab-case (gunakan tanda kutip dengan kebab-case) untuk nama properti CSS:
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
activeColor: 'red',
fontSize: 30
}
Seringkali adalah ide yang baik untuk bind gaya objek secara langsung sehingga templatnya lebih bersih:
<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
Sekali lagi, sintaksis objek sering digunakan bersama dengan properti computed yang mengembalikan objek.
Sintaksis Array
Sintaksis array untuk v-bind:style memungkinkan Anda menerapkan beberapa gaya objek ke elemen yang sama:
<div v-bind:style="[baseStyles, overridingStyles]"></div>
Prefiks Otomatis (Auto-prefixing)
Ketika Anda menggunakan properti CSS yang membutuhkan vendor prefixes di v-bind:style, misalnya transform, Vue akan secara otomatis mendeteksi dan menambahkan prefiks yang sesuai dengan gaya yang diterapkan.
Banyak Nilai
2.3.0+
Mulai 2.3.0+ Anda dapat memberikan array nilai ganda (prefixed) ke properti gaya, misalnya:
<div v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
Ini hanya akan membuat nilai terakhir dalam array yang didukung browser. Dalam contoh ini, ini akan membuat display: flex untuk browser yang mendukung versi flexbox yang tanpa pefiks.