亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在vue自定義組件中使用?v-model指令詳情

 更新時間:2022年06月07日 10:29:46   作者:??靈扁扁????  
這篇文章主要介紹了在vue自定義組件中使用?v-model指令詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

一、前言

如何實現(xiàn)在自定義的vue組件中使用v-model,。 起先覺得挺簡單,事實也挺簡單,但似乎又沒那么簡單。因為深談這涉及指令原理、數(shù)據(jù)綁定實現(xiàn)原理。

1.技術(shù)點提前知

要想在自定義組件中使用v-model,使用上其實就簡單幾步,這里以自定義input組件為例。

關(guān)鍵步驟:

1.props的使用。在自定義的vue文件中,聲明父組件要向子組件傳遞的prop屬性,例如

 props: {
    // 接收string和number類型的值,
    myValue: [String, Number],
  },

注意:myValue這個屬性名稱是可以自定義的,但[String, Number]不能寫成字符串["String","Number"],因為此時它們是構(gòu)造器,是js的全局api。

2.$emit的使用。用于向上派發(fā)事件,在自定義組件中觸發(fā),例如:

methods: {
    changeInput ($event) {
      this.$emit('myInput', $event.target.value)
   },
}

向上派發(fā)myInput事件,這樣model監(jiān)聽myInput才有意義: 當(dāng)輸入字符時觸發(fā)input事件,進(jìn)而派發(fā)觸發(fā)自定義的myInput事件, 然后model監(jiān)聽myInput,就實現(xiàn)了數(shù)據(jù)綁定。必須注意,這里的派發(fā)事件名“myInput”必須和model中的event的值相同。

PS: 通過watch監(jiān)聽 input標(biāo)簽的值,然后$emit派發(fā)事件,和通過@input派發(fā)事件具有一樣的效果。只要能達(dá)到通信的效果即可,手段是多樣的。

3.關(guān)鍵的model。model是允許vue自定義組件使用v-model的關(guān)鍵,雖然有時我們不顯性的使用它,也不影響我們在自定義組件中使用v-model指令,這只是因為被設(shè)置默認(rèn)值。而有的時候,顯示的使用,并自定義model的prop和event會有益。這是官網(wǎng)關(guān)于model的介紹:

允許一個自定義組件在使用 v-model 時定制 prop 和 event。默認(rèn)情況下,一個組件上的 v-model 會把 value 用作 prop 且把 input 用作 event,但是一些輸入類型比如單選框和復(fù)選框按鈕可能想使用 value prop 來達(dá)到不同的目的。使用 model 選項可以回避這些情況產(chǎn)生的沖突。

----本段摘自vue官網(wǎng)

自定義model使用示例:

model: {
    prop: 'myValue', // 默認(rèn)是value
    event: 'myInput', // 默認(rèn)是input
},

當(dāng)我們使用model的默認(rèn)值的時候value作prop,input作event時,可以省略不寫model。

4.v-model的使用。在父組件中使用自定義組件,例如

<custom-model v-model="myValue"></custom-model>

這樣寫效果也一樣:

<custom-model :my-value="myValue"></custom-model>

二、在自定義的vue組件中使用v-model

1.效果演示圖

2.自定義組件代碼示例

<template>
  <!-- 自定義組件中使用v-mode指令 -->
  <input type="search" @input="changeInput" data-myValue="">
</template>

<script>
export default {
  name: 'CustomModel',
  // 當(dāng)我們使用model的默認(rèn)值的時候value作prop,input作event時,可以省略不寫model。
  model: {
    prop: 'myValue', // 默認(rèn)是value
    event: 'myInput', // 默認(rèn)是input
  },
  props: {
    // 接收string和number類型的值,
    // 注意不能是寫成字符串["String","Number"],因為此時它們是構(gòu)造器,是全局變量
    myValue: [String, Number],
  },
  methods: {
    changeInput ($event) {
      // 向上派發(fā)myInput事件,這樣model監(jiān)聽myInput才有意義:當(dāng)輸入字符時觸發(fā)input事件,
      // 進(jìn)而派發(fā)觸發(fā)自定義的myInput事件,然后model監(jiān)聽myInput,就實現(xiàn)了數(shù)據(jù)綁定
      this.$emit('myInput', $event.target.value)
    },
  }
}
</script>

3.在父組件使用自定義組件

<template>
  <div class="home">
    <h3>輸入的實時內(nèi)容:{{ myValue }}</h3>
    <custom-model v-model="myValue"></custom-model>
  </div>
</template>
<script>
import CustomModel from './CustomModel'
export default {
  name: 'Home',
  components: {
    CustomModel,
  },
  data () {
    return {
      myValue: ''
    }
  },
}
</script>

三、優(yōu)寫時刻

本段是【每一個技術(shù)點都值得優(yōu)寫】系列特寫段落。 是一種拓展補(bǔ)充,就像數(shù)學(xué)試卷最后的附加題,讀者可以自由選擇閱讀。

v-model簡要補(bǔ)充。 v-model是vue中常用且重要的指令,能起到數(shù)據(jù)雙向綁定的作用。 從MVVM(Model-View-ViewModel)架構(gòu)的角度理解v-model的數(shù)據(jù)綁定, 它在需要view層和model層實現(xiàn)交互互動的時,非常有用。 例如,在view層輸入數(shù)據(jù),會及時更新該數(shù)據(jù)到model層, 而更新model層中的數(shù)據(jù),也會被及時更新到view層, 這種更新業(yè)務(wù)邏輯是ViewModel在起作用。

先來看下數(shù)據(jù)雙向綁定的效果:

那么vue是如何實現(xiàn)數(shù)據(jù)綁定的?

①object類型數(shù)據(jù)實現(xiàn)數(shù)據(jù)可觀測,是通過Object的defineProperty()實現(xiàn)的。

②array類型數(shù)據(jù)實現(xiàn)數(shù)據(jù)可觀測,是通過攔截重寫數(shù)據(jù)的7個可操作數(shù)組且會改變數(shù)組自身的方法實現(xiàn)的。

③依賴是一種表示數(shù)據(jù)和其使用者的關(guān)系,依賴管理器會為每一個依賴創(chuàng)建watcher實例。

④數(shù)據(jù)變化被觀測到后,會通過代表依賴的watcher實例,調(diào)用update()方法,通知視圖更新。

⑤vue提供了set和delete兩個全局API,彌補(bǔ)部分新增和刪除數(shù)據(jù)手法,無法被觀測,進(jìn)而影響數(shù)據(jù)響應(yīng)式實現(xiàn)的不足。

到此這篇關(guān)于在vue自定義組件中使用 v-model指令詳情的文章就介紹到這了,更多相關(guān) vue v-model指令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Vue前后端跨域問題的方式匯總

    解決Vue前后端跨域問題的方式匯總

    這篇文章主要介紹了解決Vue前后端跨域問題的多種方式,本文主要介紹借助解決Vue前后端跨域問題的幾種方式,將會使用axios進(jìn)行請求需要的朋友可以參考下
    2022-11-11
  • vue 封裝 Adminlte3組件的實現(xiàn)

    vue 封裝 Adminlte3組件的實現(xiàn)

    這篇文章主要介紹了vue 封裝 Adminlte3組件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 基于VuePress 輕量級靜態(tài)網(wǎng)站生成器的實現(xiàn)方法

    基于VuePress 輕量級靜態(tài)網(wǎng)站生成器的實現(xiàn)方法

    VuePress是一個基于Vue的輕量級靜態(tài)網(wǎng)站生成器以及為編寫技術(shù)文檔而優(yōu)化的默認(rèn)主題。這么文章給大家詳細(xì)介紹了vuepress 靜態(tài)網(wǎng)站生成器的方法,需要的朋友參考下吧
    2018-04-04
  • antd的select下拉框因為數(shù)據(jù)量太大造成卡頓的解決方式

    antd的select下拉框因為數(shù)據(jù)量太大造成卡頓的解決方式

    這篇文章主要介紹了antd的select下拉框因為數(shù)據(jù)量太大造成卡頓的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 解決vue-cli腳手架打包后vendor文件過大的問題

    解決vue-cli腳手架打包后vendor文件過大的問題

    今天小編就為大家分享一篇解決vue-cli腳手架打包后vendor文件過大的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解vue 數(shù)組和對象渲染問題

    詳解vue 數(shù)組和對象渲染問題

    這篇文章主要介紹了詳解vue 數(shù)組和對象渲染問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue form 表單提交后刷新頁面的方法

    vue form 表單提交后刷新頁面的方法

    今天小編就為大家分享一篇vue form 表單提交后刷新頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue設(shè)計與實現(xiàn)合理的觸發(fā)響應(yīng)

    vue設(shè)計與實現(xiàn)合理的觸發(fā)響應(yīng)

    這篇文章主要為大家介紹了vue設(shè)計與實現(xiàn)合理的觸發(fā)響應(yīng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • vue devtools的安裝與使用教程

    vue devtools的安裝與使用教程

    vue-devtools是一款基于chrome游覽器的插件,用于調(diào)試vue應(yīng)用,這可以極大地提高我們的調(diào)試效率,這篇文章主要介紹了vue devtools的安裝與使用教程,需要的朋友可以參考下
    2018-08-08
  • vue分類篩選filter方法簡單實例

    vue分類篩選filter方法簡單實例

    這篇文章主要介紹了vue分類篩選filter方法的簡單實例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論