色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

詳解Vue的sync修飾符

瀏覽:30日期:2022-09-29 15:53:11
目錄1 、指令2 、修飾符3、 .sync 修飾符4 、總結(jié)1 、指令

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

<div v-text='x'> </div> //v-text指定標簽文本指令<div v-on:click='add'> <div> //v-on事件綁定指令

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

<img :src='http://www.lshqa.cn/bcjs/x'> </img> //v-bind:src 的簡寫<button @click='add'> </button> //v-on:click 的簡寫2 、修飾符

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

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

以阻止 <a> 標簽的點擊默認刷新頁面事件的 preventDefault 方法示例如下:

普通做法

<a href='http://www.lshqa.cn/bcjs/10178.html' v-on:click=' rel='external nofollow' pe($event)'>Vue點擊鏈接</a> //vue中訪問原始的DOM事件,可以用特殊變量 $event 把它傳入方法,在原始 HTML 中是 event

// ... methods: { pe(e){e.preventDefault() }}

使用修飾符

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

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

<a href='http://www.lshqa.cn/bcjs/10178.html' v-on:click.prevent=' rel='external nofollow' pp'>Vue點擊鏈接</a>

// ... methods: { pp(){console.log(’不跳轉(zhuǎn)頁面執(zhí)行事件’) }}

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

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

詳解Vue的sync修飾符

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

3、 .sync 修飾符

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

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

那么在 Vue 中在什么時候會需要用到這種情況呢?

就是在 Vue 的組件在接受外部數(shù)據(jù) props 時,Vue 規(guī)定,子組件在通過 props 接受外部數(shù)據(jù)后只有使用該數(shù)據(jù)的權(quán)利,但沒有修改該屬性的權(quán)利。因為,如果子組件修改了外部傳來的數(shù)據(jù),這樣一來子組件和使用其的父文件都可以改來改去,在父組件和子組件都沒有明顯的改動來源,到最后都不知道這個數(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)聽那個事件并根據(jù)需要更新一個本地的數(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ù)

使用 .sync

上述的過程在實際需求中很常用,因此 Vue 就將父組件的監(jiān)聽定義成了一個傳值時的修飾符,為 .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修飾符的詳細內(nèi)容,更多關(guān)于Vue的sync修飾符的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 久久九九有精品国产56 | 免费区欧美一级毛片 | 国产欧美日韩在线观看 | 精品亚洲大全 | 精品久久久久久综合网 | 狠狠色综合久久婷婷 | 久久精品国产亚洲精品2020 | 亚洲精品成人a | 国产aaa女人十八毛片 | 老司机精品影院一区二区三区 | 欧美一区二区三区视频在线 | 成人69| 欧美大屁股精品毛片视频 | 亚洲天堂男人的天堂 | a男人的天堂久久a毛片 | 国产精品黄网站 | 精品国产一二三区在线影院 | 亚洲欧美日韩久久一区 | 亚洲国产成人久久精品图片 | 久久精品视频播放 | 91精品国产91热久久久久福利 | 精品无码一区在线观看 | 欧美性猛交xxxx免费看手交 | 香蕉久久一区二区不卡无毒影院 | 欧美一二区 | 美女黄频免费看 | 波多野结衣一区二区 | 精品欧美成人高清视频在线观看 | 国产成人综合怡春院精品 | 看一级特黄a大片国产 | 国内久久精品视频 | 日韩三级在线观看视频 | 成人国产视频在线观看 | 草草视频在线免费观看 | 欧美成人吃奶高清视频 | 精品亚洲视频在线 | 欧美一级在线毛片免费观看 | 国产精品亚洲第一区柳州莫青 | 一级做a爰片久久毛片苍井优 | 韩国精品一区二区三区四区五区 | 成年人性网站 |