


Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini
Artikel ini akan membawa anda memahami model v dalam vue2, melihat sama ada model v mengikat dua hala atau aliran data sehala, dan cara menjadikan komponen yang anda bangunkan menyokong model v berguna kepada semua orang.
Baca artikel ini
Anda akan:
- Faham: Apakah
v-model
gula sintaksis?vue2
Apakah rawatan istimewa yang telah dilakukan kepada komponen asli? - Ketahui:
v-model
Adakah ia aliran data sehala atau pengikatan data dua hala? - Fikirkan:
v-model
Apakah "kesan sampingan" di luar gula sintaksis? - Ketahui cara membuat komponen anda menyokong sintaks
v-model
.
1. Intipati v-model
ialah gula sintaksis.
『
v-model
pada asasnya hanyalah gula sintaksis. Ia bertanggungjawab untuk mendengar peristiwa input pengguna untuk mengemas kini data dan melakukan beberapa pemprosesan khas untuk beberapa senario yang melampau. 』 --Dokumentasi rasmi. [Cadangan berkaitan: tutorial vue.js]
Apakah gula sintaksis?
Gula sintaksis, secara ringkasnya, adalah "penulisan yang mudah".
Dalam kebanyakan kes, v-model="foo"
bersamaan dengan :value="foo"
tambah @input="foo = $event"
;
<!-- 在大部分情况下,以下两种写法是等价的 --> <el-input v-model="foo" /> <el-input :value="foo" @input="foo = $event" />
Ya, dalam kebanyakan kes Itu sahaja.
Tetapi terdapat pengecualian:
vue2
menyediakan atributmodel
kepada komponen, membenarkan pengguna menyesuaikan nama prop bagi nilai lulus dan nama acara untuk mengemas kini nilai. Saya akan melangkau ini buat masa ini dan akan pergi ke butiran dalam Bahagian 4.Untuk elemen asli
html
,vue
telah melakukan banyak "kerja kotor" untuk membuat kami mengabaikan perbezaan dalam APIhtml
. Kaedah penulisan kiri dan kanan unsur berikut adalah setara:-
textarea
Elemen:
-
select
Kotak lungsur:
-
input type='radio'
Butang radio:
-
input type='checkbox'
Kotak berbilang pilihan:
Dalam pemikiran pengaturcaraan, cara membantu pengguna "menyembunyikan butiran" ini dipanggil enkapsulasi.
2. Adakah model v hanyalah gula sintaksis? (Trivia)
v-model
Ia bukan sekadar gula sintaks, ia juga mempunyai kesan sampingan.
Kesan sampingan adalah seperti berikut: Jika v-model
terikat pada sifat yang tidak wujud pada objek responsif, maka vue
akan menambah sifat ini secara senyap-senyap dan menjadikannya responsif .
Sebagai contoh, lihat kod berikut:
// template中: <el-input v-model="user.tel"></el-input> // script中: export default { data() { return { user: { name: '公众号: 前端要摸鱼', } } } }
Atribut user.tel
tidak ditakrifkan dalam data responsif, tetapi template
terikat dengan v-model
user.tel
, rasa apa yang berlaku apabila anda menaip?
Lihat kesannya:
Mari dedahkan jawapannya: user
akan mempunyai atribut tel
baharu dan tel
atribut ini masih Responsif.
Ini adalah kesan "kesan sampingan", adakah anda telah mempelajarinya?
3 v-model
Adakah ia mengikat dua hala atau aliran data sehala?
2.1 v-model
Adakah ia mengikat dua hala?
Ya, ia rasmi.
『Anda boleh menggunakan arahan model-v untuk mencipta pengikatan data dua hala pada elemen bentuk <input>
, <textarea></textarea>
dan <select></select>
. 』——dokumen rasmi vue2
2.2 Adakah v-model
aliran data sehala?
Ya, ia juga merupakan paradigma tipikal untuk aliran data satu arah.
Walaupun pegawai tidak menyatakan perkara ini secara eksplisit, kita boleh membuat garisan antara keduanya.
- Apakah aliran data tunggal?
Komponen anak tidak boleh menukar atribut prop
yang dihantar kepadanya oleh komponen induk Pendekatan yang disyorkan ialah ia membuang peristiwa untuk memberitahu komponen induk untuk menukar nilai terikat itu sendiri. Bagaimana untuk melakukan
-
v-model
?
v-model
Pendekatan ini konsisten sepenuhnya dengan aliran data tunggal. Ia juga menyediakan standard untuk penamaan dan definisi acara.
众所周知 .sync
修饰符是单向数据流的另一个典型范式。
『单向数据流』总结起来其实也就8个字:『数据向下,事件向上』。
四、如何让你开发的组件支持 v-model
虽然不想说,但这确实是高频面试题。
在定义 vue
组件时,你可以提供一个 model
属性,用来定义该组件以何种方式支持 v-model
。
model
属性本身是有默认值的,如下:
// 默认的 model 属性 export default { model: { prop: 'value', event: 'input' } }
也就是说,如果你不定义 model
属性,或者你按照当面方法定义属性,当其他人使用你的自定义组件时,v-model="foo"
就完全等价于 :value="foo"
加上 @input="foo = $event"
。
如果把 model
属性进行一些改装,如下:
// 默认的 model 属性 export default { model: { prop: 'ame', event: 'zard' } }
那么,v-model="foo"
就等价于 :ame="foo"
加上 @zard="foo = $event"
。
没错,就是这么容易,让我们看个例子。
先定义一个自定义组件:
<template> <div> 我们是TI{{ ame }}冠军 <el-button @click="playDota2(1)">加</el-button> <el-button @click="playDota2(-1)">减</el-button> </div> </template> <script> export default { props: { ame: { type: Number, default: 8 } }, model: { // 自定义v-model的格式 prop: 'ame', // 代表 v-model 绑定的prop名 event: 'zard' // 代码 v-model 通知父组件更新属性的事件名 }, methods: { playDota2(step) { const newYear = this.ame + step this.$emit('zard', newYear) } } } </script>
然后我们在父组件中使用该组件:
// template中 <dota v-model="ti"></dota> // script中 export default { data() { return { ti: 8 } } }
看看效果:
让你的组件支持 v-model
就这么容易。
五、demo和源码
获取源码请访问github
https://github.com/zhangshichun/blog-vue2-demos/tree/master/src/views/about-v-model
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Netflix menggunakan React untuk meningkatkan pengalaman pengguna. 1) Ciri -ciri komponen React membantu Netflix Split Complex UI ke dalam modul yang boleh diurus. 2) Maya DOM mengoptimumkan kemas kini UI dan meningkatkan prestasi. 3) Menggabungkan Redux dan GraphQL, Netflix dengan cekap menguruskan status aplikasi dan aliran data.

Vue.js adalah kerangka depan, dan rangka kerja belakang digunakan untuk mengendalikan logik sisi pelayan. 1) Vue.js memberi tumpuan kepada membina antara muka pengguna dan memudahkan pembangunan melalui pengikatan data komponen dan responsif. 2) Rangka kerja back-end seperti Express dan Django mengendalikan permintaan HTTP, operasi pangkalan data dan logik perniagaan, dan dijalankan di pelayan.

Vue.js disepadukan dengan tumpuan teknologi front-end untuk meningkatkan kecekapan pembangunan dan pengalaman pengguna. 1) Alat Pembinaan: Mengintegrasikan dengan Webpack dan Rollup untuk mencapai pembangunan modular. 2) Pengurusan Negeri: Bersepadu dengan VUEX untuk menguruskan status aplikasi yang kompleks. 3) Routing: Mengintegrasikan dengan Vuerouter untuk merealisasikan penghalaan aplikasi tunggal halaman. 4) Preprocessor CSS: Menyokong SASS dan kurang untuk meningkatkan kecekapan pembangunan gaya.

Netflix memilih React untuk membina antara muka penggunanya kerana reka bentuk komponen React dan mekanisme DOM maya dapat mengendalikan antara muka yang kompleks dan kemas kini yang kerap. 1) Reka bentuk berasaskan komponen membolehkan Netflix memecah antara muka ke dalam widget yang boleh diurus, meningkatkan kecekapan pembangunan dan pemeliharaan kod. 2) Mekanisme DOM maya memastikan kelancaran dan prestasi tinggi antara muka pengguna Netflix dengan meminimumkan operasi DOM.

Vue.js disukai oleh pemaju kerana mudah digunakan dan berkuasa. 1) Sistem pengikat data responsifnya secara automatik mengemas kini paparan. 2) Sistem komponen meningkatkan kebolehgunaan semula dan mengekalkan kod. 3) Ciri -ciri pengkomputeran dan pendengar meningkatkan kebolehbacaan dan prestasi kod. 4) Menggunakan vuedevtools dan memeriksa kesilapan konsol adalah teknik debugging biasa. 5) Pengoptimuman Prestasi termasuk penggunaan atribut utama, atribut yang dikira dan komponen-komponen Alive. 6) Amalan terbaik termasuk penamaan komponen yang jelas, penggunaan komponen fail tunggal dan penggunaan cangkuk kitaran hidup yang rasional.

Vue.js adalah rangka kerja JavaScript yang progresif yang sesuai untuk membina aplikasi front-end yang cekap dan boleh dipelihara. Ciri -ciri utamanya termasuk: 1. Pengikatan data responsif, 2. Pembangunan Komponen, 3. Dom maya. Melalui ciri -ciri ini, Vue.js memudahkan proses pembangunan, meningkatkan prestasi aplikasi dan mengekalkan, menjadikannya sangat popular dalam pembangunan web moden.

Vue.js dan bertindak balas masing -masing mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keadaan pasukan. 1) vue.js sesuai untuk projek kecil dan pemula kerana kesederhanaan dan mudah digunakan; 2) React sesuai untuk projek besar dan UI yang kompleks kerana reka bentuk ekosistem dan komponennya yang kaya.

Vue.js meningkatkan pengalaman pengguna melalui pelbagai fungsi: 1. Sistem responsif menyedari maklum balas data masa nyata; 2. Pembangunan komponen meningkatkan kebolehgunaan semula kod; 3. Vuerouter menyediakan navigasi lancar; 4. Data dinamik mengikat dan animasi peralihan meningkatkan kesan interaksi; 5. Mekanisme pemprosesan ralat memastikan maklum balas pengguna; 6. Pengoptimuman prestasi dan amalan terbaik meningkatkan prestasi aplikasi.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
