最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

v-model

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

你也可以通過子組件中的model選項(xiàng)來修改v-model綁定的的默認(rèn)事件和prop自定義屬性:

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

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

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

v-model通常用于表單控件,因?yàn)檫@樣子組件有更強(qiáng)的控制能力

.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)的屬性名也會(huì)變化:

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

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

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

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

細(xì)微之處的區(qū)別

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

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

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

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

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

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

相關(guān)文章

  • vue + canvas實(shí)現(xiàn)涂鴉面板的示例代碼

    vue + canvas實(shí)現(xiàn)涂鴉面板的示例代碼

    這篇文章主要給大家介紹了vue + canvas實(shí)現(xiàn)涂鴉面板的示例,文章通過代碼示例介紹的非常詳細(xì),感興趣的小伙伴跟著小編一起來看看吧
    2023-08-08
  • Vue/React子組件實(shí)例暴露方法(TypeScript)

    Vue/React子組件實(shí)例暴露方法(TypeScript)

    最近幾個(gè)月都在用TS開發(fā)各種項(xiàng)目,框架有涉及到Vue3,React18等,記錄一下Vue/React組件暴露出變量/函數(shù)的方法的寫法,對(duì)vue?react組件暴露方法相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • vue3中的ref()詳解

    vue3中的ref()詳解

    ref對(duì)象可以通過.value屬性進(jìn)行修改,修改后的值也是響應(yīng)式的,并且修改后會(huì)觸發(fā)相關(guān)的副作用,這篇文章主要介紹了vue3中的ref(),需要的朋友可以參考下
    2023-05-05
  • elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法

    elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法

    這篇文章主要介紹了elementUI select組件默認(rèn)選中效果實(shí)現(xiàn)的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式

    vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式

    這篇文章主要介紹了vue之字符串、數(shù)組之間的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 深入理解Vue的過度與動(dòng)畫

    深入理解Vue的過度與動(dòng)畫

    這篇文章主要為大家介紹了Vue的過度與動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Vue3計(jì)算屬性和異步計(jì)算屬性方式

    Vue3計(jì)算屬性和異步計(jì)算屬性方式

    這篇文章主要介紹了Vue3計(jì)算屬性和異步計(jì)算屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue.js圖片預(yù)覽插件使用詳解

    Vue.js圖片預(yù)覽插件使用詳解

    Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。這篇文章主要介紹了Vue.js圖片預(yù)覽插件的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • Vue Router中獲取路由傳遞過來的參數(shù)(方法詳解)

    Vue Router中獲取路由傳遞過來的參數(shù)(方法詳解)

    在VueRouter中,可以通過動(dòng)態(tài)路由匹配和查詢參數(shù)`query`來傳遞參數(shù),并將路由參數(shù)或查詢參數(shù)作為組件的`props`傳遞,動(dòng)態(tài)路由匹配使用`route.params`訪問參數(shù),查詢參數(shù)使用`route.query`訪問,本文給大家介紹Vue Router中獲取路由傳遞過來的參數(shù),感興趣的朋友一起看看吧
    2025-02-02
  • vue開發(fā)移動(dòng)端h5環(huán)境搭建的全過程

    vue開發(fā)移動(dòng)端h5環(huán)境搭建的全過程

    在正式使用Vue進(jìn)行移動(dòng)端頁面開發(fā)前,需要做一些前置工作,下面這篇文章主要給大家介紹了關(guān)于vue開發(fā)移動(dòng)端h5環(huán)境搭建的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08

最新評(píng)論

唐河县| 高平市| 清原| 洛扎县| 德化县| 吉安市| 浠水县| 绥中县| 讷河市| 凌源市| 平武县| 涪陵区| 齐齐哈尔市| 繁昌县| 溧水县| 博湖县| 新兴县| 朝阳县| 丰城市| 安西县| 临沭县| 察哈| 高安市| 景谷| 周口市| 潮州市| 和田市| 佳木斯市| 通州市| 西充县| 杂多县| 泗阳县| 揭东县| 都匀市| 姚安县| 延寿县| 乐平市| 松滋市| 沙洋县| 定陶县| 景东|