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

詳解Vue的sync修飾符

 更新時(shí)間:2021年05月15日 10:46:39   作者:lovin  
.sync修飾符算是Vue的所有修飾符中較難理解的一個(gè),本篇文章就帶你走近.sync的世界,深入理解后會(huì)發(fā)現(xiàn),其實(shí)也就那么回事。修飾符和指令息息相關(guān),下面從指令 ->修飾符->.sync修飾符由淺入深地來講解 .sync的含義及用法。

1 、指令

指令即 Directive,從字面意思理解就是我告訴你要做什么,就是發(fā)送了一個(gè)指令,然后由接收指令的人去做就好了。在 Vue 中的指令有個(gè)統(tǒng)一好認(rèn)的格式,就是以 v- 開頭的就是指令,如:

<div v-text="x"> </div> //v-text指定標(biāo)簽文本指令
<div v-on:click="add"> <div> //v-on事件綁定指令

但并不是所有的指令都以 v- 開頭,對于一些簡寫,也是指令,如

<img :src="x"> </img> //v-bind:src 的簡寫
<button @click="add"> </button> //v-on:click 的簡寫

2 、修飾符

修飾符是與指令中的事件處理指令 v-on 息息相關(guān)的一個(gè)語法糖,所謂語法糖就是很 sweet,簡單好用,在編程界就是能幫你做好的都幫你做了,只剩最簡單的事留給你做。

在事件處理程序中,有一些非常常見的需求,例如 event.preventDefault() 阻止默認(rèn)事件和 event.stopPropagation()阻止事件冒泡等等。因此 Vue 就把這些事件處理過程中常見的需求幫我們處理好了,在我們需要時(shí)告訴 Vue 一聲,它就會(huì)自動(dòng)幫我們阻止默認(rèn)事件、阻止事件冒泡等。那么我們告訴 Vue 的途徑就是 Vue 提供給我們的修飾符,修飾符是由點(diǎn)開頭的指令后綴來表示的

以阻止 <a> 標(biāo)簽的點(diǎn)擊默認(rèn)刷新頁面事件的 preventDefault 方法示例如下:

普通做法

<a href="" v-on:click=" rel="external nofollow" pe($event)">Vue點(diǎn)擊鏈接</a> //vue中訪問原始的DOM事件,可以用特殊變量 $event 把它傳入方法,在原始 HTML 中是 event
// ... 
methods: {
    pe(e){
        e.preventDefault()
    }
}

使用修飾符

<a v-on:click.prevent>Vue點(diǎn)擊鏈接</a> //prevent修飾符就等同于上述的 e.preventDefault()

由上述的小例可以看出,修飾符是不是個(gè)語法糖,幫我們把常用的需求提前寫好了,用的時(shí)候說一聲就行。當(dāng)有事件處理程序時(shí)直接在后面繼續(xù)寫即可,如下:

<a href="" v-on:click.prevent=" rel="external nofollow" pp">Vue點(diǎn)擊鏈接</a>
// ... 
methods: {
    pp(){
        console.log('不跳轉(zhuǎn)頁面執(zhí)行事件')
    }
}

修飾符是有順序地執(zhí)行的,如上述的 v-on:click.prevent="pp",意思就是在點(diǎn)擊時(shí),先執(zhí)行修飾符 prevent 的阻止默認(rèn)事件,然后再執(zhí)行后面的 pp 事件處理函數(shù)。

修飾符幾乎是和事件 event 的相關(guān)處理函數(shù)一一對應(yīng)的,根據(jù)事件的不同,對應(yīng)不同事件的修飾符,如下所示分為幾大類:

修飾符的來源和含義就是上述所述,至于具體有哪些,在實(shí)際用到時(shí)可去官網(wǎng)查找所需,有兩個(gè)最最常用的需要記住,即 @click.stop 是阻止事件冒泡,@click.prevent 是阻止默認(rèn)事件,@keypress.enter 是按鍵為回車事件。

3、 .sync 修飾符

.sync 修飾符相對來說比較特殊,因?yàn)槠洳皇鞘录?event 原有的事件處理相關(guān)函數(shù)的演變,而是 Vue 自己定義的一個(gè)修飾符,如上述的修飾符分類中也將 .sync 分類為自定義事件的修飾符,那么這個(gè)自定義事件到底是什么事件呢?

這個(gè)事件對應(yīng)的是 eventBus 事件,eventBus 事件是 MVC 中的一個(gè)模式,簡單來說就是發(fā)布和訂閱的過程,就是說有兩方,甲方負(fù)責(zé)始終監(jiān)聽某個(gè)事件,乙方負(fù)責(zé)在需要的時(shí)候觸發(fā)這個(gè)事件,甲方在監(jiān)聽到事件被觸發(fā)時(shí)就執(zhí)行某些操作。甲方就是訂閱,乙方就是發(fā)布,雙方就是發(fā)布和訂閱模式。

那么在 Vue 中在什么時(shí)候會(huì)需要用到這種情況呢?

就是在 Vue 的組件在接受外部數(shù)據(jù) props 時(shí),Vue 規(guī)定,子組件在通過 props 接受外部數(shù)據(jù)后只有使用該數(shù)據(jù)的權(quán)利,但沒有修改該屬性的權(quán)利。因?yàn)?,如果子組件修改了外部傳來的數(shù)據(jù),這樣一來子組件和使用其的父文件都可以改來改去,在父組件和子組件都沒有明顯的改動(dòng)來源,到最后都不知道這個(gè)數(shù)據(jù)是誰改的了,數(shù)據(jù)就不好控制了。因此 Vue 就規(guī)定組件只能有權(quán)使用 props 的屬性,不得自己改變,那么若其想要改變,就必須通知該數(shù)據(jù)的真正擁有者改變,也就是使用該組件的父文件。

其使用的通知方式就是 eventBus 發(fā)布和訂閱模式。

不使用 .sync

子組件觸發(fā)事件,事件名格式必須是 update:myPropName ,用 $emit 函數(shù)觸發(fā)

this.$emit('update:title', newTitle) //newTitle就是你想要修改props數(shù)據(jù)修改后的值

父組件可以監(jiān)聽那個(gè)事件并根據(jù)需要更新一個(gè)本地的數(shù)據(jù)屬性

<myconponent :title="Ptitle" @update:title="Ptitle = $event" ></myconponent>
//在父組件中監(jiān)聽該事件,該事件觸發(fā)后傳遞的值以 $event 接收,$event === newTitle ,Ptitle是父組件的數(shù)據(jù)

或者是定義的接受函數(shù)的參數(shù)

<myconponent :title="Ptitle" @update:title="val => Ptitle = val" ></myconponent>
//這時(shí)接收的值作為函數(shù)的參數(shù)

使用 .sync

上述的過程在實(shí)際需求中很常用,因此 Vue 就將父組件的監(jiān)聽定義成了一個(gè)傳值時(shí)的修飾符,為 .sync ,上述代碼使用 .sync 修飾符后為:

子組件(是一樣的)

this.$emit('update:title', newTitle)

父組件

<myconponent :title.sync="Ptitle"></myconponent> //等同于上面的傳值并監(jiān)聽

是不是很 sweet 呢?

4 、總結(jié)

.sync 的用法規(guī)則

1.組件不能修改 props 外部數(shù)據(jù)

2.this.$emit 可以觸發(fā)事件,并傳參

3.$event 可以獲取 $emit 的參數(shù)

以上就是詳解Vue的sync修飾符的詳細(xì)內(nèi)容,更多關(guān)于Vue的sync修飾符的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue中保留字符串中的空格完美解決方案

    vue中保留字符串中的空格完美解決方案

    這篇文章主要介紹了vue中保留字符串中的空格的解決方案,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • vue倉庫的使用方式

    vue倉庫的使用方式

    這篇文章主要介紹了vue倉庫的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • Vue實(shí)現(xiàn)記住賬號(hào)密碼功能的操作過程

    Vue實(shí)現(xiàn)記住賬號(hào)密碼功能的操作過程

    這篇文章主要介紹了Vue實(shí)現(xiàn)記住賬號(hào)密碼功能,用戶登錄時(shí)若勾選“記住我”功能選項(xiàng),則將登錄名和密碼(加密后)存入本地緩存,下次登錄頁面加載時(shí)自動(dòng)獲取保存好的賬號(hào)和密碼(需解密),回顯到登錄輸入框中,下面分享我實(shí)現(xiàn)的具體步驟,需要的朋友可以參考下
    2022-07-07
  • vue實(shí)現(xiàn)帶縮略圖的輪播圖效果

    vue實(shí)現(xiàn)帶縮略圖的輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了如何使用vue實(shí)現(xiàn)帶縮略圖的輪播圖效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的可以參考下
    2024-02-02
  • 用electron打包vue項(xiàng)目中的報(bào)錯(cuò)問題及解決

    用electron打包vue項(xiàng)目中的報(bào)錯(cuò)問題及解決

    這篇文章主要介紹了用electron打包vue項(xiàng)目中的報(bào)錯(cuò)問題及解決,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue實(shí)現(xiàn)選項(xiàng)卡功能

    vue實(shí)現(xiàn)選項(xiàng)卡功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)選項(xiàng)卡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue遞歸組件實(shí)現(xiàn)elementUI多級(jí)菜單

    vue遞歸組件實(shí)現(xiàn)elementUI多級(jí)菜單

    這篇文章主要為大家詳細(xì)介紹了vue遞歸組件實(shí)現(xiàn)elementUI多級(jí)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • vuex?store?緩存存儲(chǔ)原理分析

    vuex?store?緩存存儲(chǔ)原理分析

    這篇文章主要介紹了vuex?store?緩存存儲(chǔ)原理,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue虛擬滾動(dòng)性能優(yōu)化方式詳解

    vue虛擬滾動(dòng)性能優(yōu)化方式詳解

    這篇文章主要為大家介紹了vue虛擬滾動(dòng)性能優(yōu)化方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 用Vue-cli搭建的項(xiàng)目中引入css報(bào)錯(cuò)的原因分析

    用Vue-cli搭建的項(xiàng)目中引入css報(bào)錯(cuò)的原因分析

    本篇文章主要介紹了用Vue-cli搭建的項(xiàng)目中引入css報(bào)錯(cuò)的原因分析,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論

革吉县| 绥江县| 金阳县| 镇坪县| 镇巴县| 澎湖县| 马边| 茌平县| 辰溪县| 宁晋县| 永仁县| 合肥市| 门源| 玉林市| 历史| 周口市| 曲水县| 吉木萨尔县| 长海县| 吴川市| 天柱县| 怀宁县| 福贡县| 栾城县| 肇源县| 上高县| 沂源县| 花垣县| 富源县| 张家口市| 政和县| 内乡县| 望谟县| 通州市| 池州市| 大渡口区| 哈巴河县| 孝感市| 蒙城县| 吉安市| 卢湾区|