vue中的addEventListener和removeEventListener用法說明
addEventListener和removeEventListener用法說明
1、添加監(jiān)聽事件(addEventListener)
語法:element.addEventListener(event, function, useCapture)
event
:指定事件名(注意: 不要使用 "on" 前綴。 例如,使用 "click" ,而不是使用 "onclick")function
:指定要事件觸發(fā)時執(zhí)行的函數(shù)(事件對象會作為第一個參數(shù)傳入函數(shù))useCapture
:指定事件是否在捕獲或冒泡階段執(zhí)行,默認false(true - 事件句柄在捕獲階段執(zhí)行,false-事件句柄在冒泡階段執(zhí)行)
mounted() { ? ? window.addEventListener("resize", this.setNavLeft); }, methods: { ? ? listenerFunction(e) { ? ? ? document.addEventListener("scroll", this.handleScroll, true); ? ? }, }
2、移出監(jiān)聽事件(removeEventListener)
語法:element.removeEventListener(event, function, useCapture)
注意:在vue中銷毀事件監(jiān)聽,一定要在destroyed生命周期中執(zhí)行,在 beforeDestroy到destroyed之間,執(zhí)行組件事件拆卸,在beforeDestroy中執(zhí)行事件銷毀是成功不了的
destroyed() { ? ? document.removeEventListener("scroll", this.handleScroll, true); ? ? window.removeEventListener("resize", this.setNavLeft); ? },
使用addEventListener添加事件、removeEventListener移除事件
最近在項目中需要用到addEventListener監(jiān)聽滾動條滾動的高度,所以就研究了一下在vue中是怎么進行事件監(jiān)聽的。
添加事件
給要添加事件的元素加上ref屬性
在mounted中添加事件
mounted() { this.$refs.box.addEventListener('scroll',()=>{ console.log('scroll',this.$refs.box.scrollTop) }); }
這樣就添加成功了!
移除事件
如果要移除已添加的事件,removeEventListener中傳入的方法必須和addEventListener中傳入的是同一個方法才能成功移除,所以在添加時就不能用匿名函數(shù)啦。需改成如下寫法
mounted() { this.$refs.box.addEventListener('scroll',this.scrollEvent); }, methods:{ scrollEvent(){ console.log('scroll',this.$refs.box.scrollTop) } }
這里要注意 傳入的方法 this.scrollEvent 后面不能加括號,否則無法成功添加
組件銷毀前移除事件
beforeDestroy() { this.$refs.box.removeEventListener('scroll',this.scrollEvent); }
如果是keep-alive組件,可以用下面這種方式
? activated() { ? ? this.$refs.box.addEventListener('scroll', this.scrollEvent); ? }, ? deactivated(){ ? ? this.$refs.box.removeEventListener('scroll',this.scrollEvent); ? },
另外,addEventListener還可以給一個元素添加多個事件,并且不會覆蓋已存在的事件,這里就不多展開了~
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-cli2 構(gòu)建速度優(yōu)化的實現(xiàn)方法
這篇文章主要介紹了vue-cli2 構(gòu)建速度優(yōu)化的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01vue中使用echarts繪制雙Y軸圖表時刻度沒有對齊的兩種解決方法(最新方案)
這篇文章主要介紹了vue中使用echarts繪制雙Y軸圖表時,刻度沒有對齊的兩種解決方法,主要原因是因為刻度在顯示時,分割段數(shù)不一樣,導致左右的刻度線不一致,不能重合在一起,下面給大家分享解決方法,需要的朋友可以參考下2024-03-03element-plus dialog v-loading不生效問題及解決
這篇文章主要介紹了element-plus dialog v-loading不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Vue中l(wèi)ocalStorage的用法和監(jiān)聽localStorage值的變化
這篇文章主要介紹了Vue中l(wèi)ocalStorage的用法和監(jiān)聽localStorage值的變化,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04從0到1構(gòu)建vueSSR項目之node以及vue-cli3的配置
這篇文章主要介紹了從0到1構(gòu)建vueSSR項目之node以及vue-cli3的配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03