欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中v-model指令與.sync修飾符的區(qū)別詳解

 更新時間:2021年08月20日 16:29:09   作者:睡不著先生  
本文主要介紹了vue中v-model指令與.sync修飾符的區(qū)別詳解,詳細的介紹了兩個的用法和區(qū)別,感興趣的可以了解一下

v-model

    <!--父組件-->
    <template>
        <!--v-model 指令是語法糖-->
        <Child v-model="model"></Child>
        <!-- 把 v-model 指令展開后相當于下面的代碼 -->
        <!-- v-model綁定的默認事件是input,默認prop是value屬性 -->
        <Child :value="model" @input="model = $event"></Child>
    </template>

你也可以通過子組件中的model選項來修改v-model綁定的的默認事件和prop自定義屬性:

 //子組件
 export default {
  model: {
         prop: 'checked',
         event: 'change'
     }
 }

所以相應(yīng)的父組件使用v-model的時候的等效操作為:

    <template>
        <Child :checked="model"  @change="model = $event"></Child>
    <template>

v-model通常用于表單控件,因為這樣子組件有更強的控制能力

.sync

   <!-- 父組件 -->
    <template>
        <!-- .sync添加于v2.4,他能用于修改傳遞到子組件中的屬性 -->
        <Child :xxx.sync="model"></Child>
        <!-- 等效于下面的代碼 -->
        <Child :xxx = "model" @update:xxx = "model = $event"></Child>
    </template>
    <!-- 子組件 -->
    <input :value="xxx" @input = "$emit('update:xxx', $event.target.value)"/>

這里綁定的屬性名稱xxx可以更改,相應(yīng)的屬性名也會變化:

    <!-- 父組件 -->
    <template>
        <Child :foo.sync="model"></Child>
    </template>
    <!-- 子組件 -->
    <input :value = "foo" @input = "$emit('update:foo', $event.target.value)"/>

.sync的原理用到了子組件向父組件派發(fā)事件的$emit方法。其應(yīng)用場景為子組件想修改父組件傳遞的屬性;

.sync修飾符的控制能力都在父組件,事件名稱也是相對固定的update:xxx

兩者本質(zhì)都是一樣,并沒有任何區(qū)別: “監(jiān)聽一個觸發(fā)事件”="(val) => value = val"。 

細微之處的區(qū)別

1.只不過v-model默認對應(yīng)的是input或者textarea等組件的input事件,如果在子組件替換這個input事件,其本質(zhì)和.sync修飾符一模一樣。比較單一,不能有多個。

// 子組件可以用自定義事件,來替換v-model默認對應(yīng)的原生input事件,只不過我們需要在子組件手動 $emit
model: {
        prop: "value",
        event: "update"
},

一個組件可以多個屬性用.sync修飾符,可以同時"雙向綁定多個“prop”,而并不像v-model那樣,一個組件只能有一個。

總結(jié)功能作用場景:

1.v-model針對更多的是最終操作結(jié)果,是雙向綁定的結(jié)果,是value,是一種change操作。
比如:輸入框的值、多選框的value值列表、樹結(jié)構(gòu)最終綁定的id值列表(ant design和element都是)、等等...
2..sync針對更多的是各種各樣的狀態(tài),是狀態(tài)的互相傳遞,是status,是一種update操作。
比如:組件loading狀態(tài)、子菜單和樹結(jié)構(gòu)展開列表(狀態(tài)的一種)、某個表單組件內(nèi)部驗證狀態(tài)、等等....

但是也有例外,就是v-model也可以替代部分.sync的情況,這是針對于這個組件只有一個功能就是切換狀態(tài)的時候,這個狀態(tài)就是最終操作值,這時候可以替代.sync修飾符。使用兩種不同的方式雙向綁定,能夠讓我們快速理解組件的結(jié)構(gòu)。

相關(guān)文章

  • sublime如何配置開發(fā)VUE環(huán)境自動格式化代碼

    sublime如何配置開發(fā)VUE環(huán)境自動格式化代碼

    這篇文章主要介紹了sublime如何配置開發(fā)VUE環(huán)境自動格式化代碼問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 使用vue寫一個翻頁的時間插件實例代碼

    使用vue寫一個翻頁的時間插件實例代碼

    最近在做自己項目中遇到一個非常簡單的功能,跟大家分享下,這篇文章主要給大家介紹了關(guān)于使用vue寫一個翻頁的時間插件的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • vue相關(guān)配置文件詳解及多環(huán)境配置詳細步驟

    vue相關(guān)配置文件詳解及多環(huán)境配置詳細步驟

    這篇文章主要介紹了vue相關(guān)配置文件詳解及多環(huán)境配置的教程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • vue keep-alive實現(xiàn)多組件嵌套中個別組件存活不銷毀的操作

    vue keep-alive實現(xiàn)多組件嵌套中個別組件存活不銷毀的操作

    這篇文章主要介紹了vue keep-alive實現(xiàn)多組件嵌套中個別組件存活不銷毀的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue.js數(shù)據(jù)響應(yīng)式原理解析

    vue.js數(shù)據(jù)響應(yīng)式原理解析

    這篇文章主要介紹了vue.js數(shù)據(jù)響應(yīng)式原理解析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • 淺談Vue.use的使用

    淺談Vue.use的使用

    這篇文章主要介紹了淺談Vue.use的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 解決vue select當前value沒有更新到vue對象屬性的問題

    解決vue select當前value沒有更新到vue對象屬性的問題

    今天小編就為大家分享一篇解決vue select當前value沒有更新到vue對象屬性的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue實現(xiàn)拖拽或點擊上傳圖片

    vue實現(xiàn)拖拽或點擊上傳圖片

    這篇文章主要為大家詳細介紹了vue實現(xiàn)拖拽或點擊上傳圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Vue實現(xiàn)移動端拖拽交換位置

    Vue實現(xiàn)移動端拖拽交換位置

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)移動端拖拽交換位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Vue在項目中如何引入本地Json數(shù)據(jù)

    Vue在項目中如何引入本地Json數(shù)據(jù)

    這篇文章主要介紹了Vue在項目中如何引入本地Json數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論