cari
Rumahhujung hadapan webView.jsMembawa 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.

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

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 atribut model 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 API html. Kaedah penulisan kiri dan kanan unsur berikut adalah setara:

  • textarea Elemen:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

  • select Kotak lungsur:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

  • input type='radio' Butang radio:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

  • input type='checkbox' Kotak berbilang pilihan:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

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: &#39;公众号: 前端要摸鱼&#39;,
      }
    }
  }
}

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:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

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 修饰符是单向数据流的另一个典型范式。

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

『单向数据流』总结起来其实也就8个字:『数据向下,事件向上』。

四、如何让你开发的组件支持 v-model

虽然不想说,但这确实是高频面试题。

在定义 vue 组件时,你可以提供一个 model 属性,用来定义该组件以何种方式支持 v-model

model 属性本身是有默认值的,如下:

// 默认的 model 属性
export default {
  model: {
    prop: &#39;value&#39;,
    event: &#39;input&#39;
  }
}

也就是说,如果你不定义 model 属性,或者你按照当面方法定义属性,当其他人使用你的自定义组件时,v-model="foo" 就完全等价于 :value="foo" 加上 @input="foo = $event"

如果把 model 属性进行一些改装,如下:

// 默认的 model 属性
export default {
  model: {
    prop: &#39;ame&#39;,
    event: &#39;zard&#39;
  }
}

那么,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: &#39;ame&#39;, // 代表 v-model 绑定的prop名
    event: &#39;zard&#39; // 代码 v-model 通知父组件更新属性的事件名
  },
  methods: {
    playDota2(step) {
      const newYear = this.ame + step
      this.$emit(&#39;zard&#39;, newYear)
    }
  }
}
</script>

然后我们在父组件中使用该组件:

// template中
<dota v-model="ti"></dota>
// script中
export default {
  data() {
    return {
      ti: 8
    }
  }
}

看看效果:

Membawa anda memahami secara mendalam tentang v-model dalam vue2 dan lihat cara membuat komponen menyokong sintaks ini

让你的组件支持 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!

Kenyataan
Artikel ini dikembalikan pada:掘金社区. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
React dan Netflix: Meneroka HubunganReact dan Netflix: Meneroka HubunganApr 26, 2025 am 12:11 AM

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 vs Rangka Kerja Backend: Menjelaskan perbezaanVUE.JS vs Rangka Kerja Backend: Menjelaskan perbezaanApr 25, 2025 am 12:05 AM

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 dan stack frontend: Memahami sambunganVue.js dan stack frontend: Memahami sambunganApr 24, 2025 am 12:19 AM

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: Meneroka Penggunaan React (atau Rangka Kerja Lain)Netflix: Meneroka Penggunaan React (atau Rangka Kerja Lain)Apr 23, 2025 am 12:02 AM

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 dan frontend: menyelam mendalam ke dalam rangka kerjaVue.js dan frontend: menyelam mendalam ke dalam rangka kerjaApr 22, 2025 am 12:04 AM

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.

Kekuatan Vue.js di Frontend: Ciri dan Manfaat UtamaKekuatan Vue.js di Frontend: Ciri dan Manfaat UtamaApr 21, 2025 am 12:07 AM

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.

Adakah vue.js lebih baik daripada bertindak balas?Adakah vue.js lebih baik daripada bertindak balas?Apr 20, 2025 am 12:05 AM

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.

Fungsi Vue.js: Meningkatkan Pengalaman Pengguna di FrontendFungsi Vue.js: Meningkatkan Pengalaman Pengguna di FrontendApr 19, 2025 am 12:13 AM

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.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

MinGW - GNU Minimalis untuk Windows

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

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft