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

vue中的自定義指令clickOutside

 更新時(shí)間:2022年05月30日 11:53:57   作者:努力成為一個(gè)優(yōu)秀的前端  
這篇文章主要介紹了vue中的自定義指令clickOutside,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

自定義指令clickOutside

這個(gè)指令通過vue的自定義指令的鉤子函數(shù)實(shí)現(xiàn)。

首先我們先看看vue官方的文檔

emmmm 看著好像有點(diǎn)困難,沒關(guān)系官方文檔也給出了例子。

現(xiàn)在應(yīng)該就明白了不少了吧。

clickoutside 這個(gè)指令用在哪里呢?

比如

寫法

export default {
    bind (el, binding, vnode) {
        function documentHandler (e) {
        // el 包含其觸發(fā)的元素 那當(dāng)然不能觸發(fā)啦
            if (el.contains(e.target)) {
                return false;
            }
            // 滿足上面條件, 并且expression 的值不為空 觸發(fā)(希望value是個(gè)函數(shù))
            if (binding.expression) {
            	//	調(diào)用自定義指令傳來的函數(shù),e是事件原對(duì)象 作為參數(shù)(為什么傳e 因?yàn)橛行┣闆r需要把這個(gè)對(duì)象拋出方便用戶的操作)
                binding.value(e);
            }
        }
        // 嗯??? 這么寫有什么作用嗎? 當(dāng)然有了,如果你想取消事件的監(jiān)聽,那么是不是需要這個(gè)函數(shù)。
        el.__vueClickOutside__ = documentHandler;
        // 在document上監(jiān)聽事件
        document.addEventListener('click', documentHandler);
    },
    update () {
    },
    unbind (el, binding) {
    // 取消事件監(jiān)聽(el.__vueClickOutside 派上用場(chǎng)了吧)
        document.removeEventListener('click', el.__vueClickOutside__);
        // 既然都取消了 那么這個(gè)屬性就沒必要存在了
        delete el.__vueClickOutside__;
    }
};

下拉框組件上的引用

吶 大功告成?。?! 

自定義指令clickoutside使用及擴(kuò)展用法

<template>
? <div class="testPage">
? ? ? ?<div class="block" @click="onShow" v-click-outside="closeDialog">111</div>
? ? ? ?<div class="show" v-if="flag">QQQQQQQQQQ</div>
? ? ? ?<!-- <input v-focus> -->
? ? ? ?<!-- <el-input v-focus type="text" /> -->
? ? ? ?<!-- <div v-click-outside="closeDialog">222</div> -->
? </div>
</template>
<script>
// import global from '../common/global';
?
export default {
? data() {
? ? return {
? ? ? flag:false,
? ? ? list:[{id:'1',name:'張三',seen:false},{id:'2',name:'李四',seen:false}],
? ? ? /* input11: '',
? ? ? numberValidateForm: {
? ? ? ? ? age: 0,
? ? ? ? ? height: '175'
? ? ? ? },
? ? ? ? rules_V: {
? ? ? ? ? height: [{ validator: validateHeight, trigger: 'blur' }]
? ? ? ? } */
? ? };
? },
?
? components: {},
? created() {},
? methods: {
? ? onShow(){
? ? ? this.flag=true;
? ? },
? ? closeDialog(){
? ? ? ?this.flag=! this.flag;
? ? },
? ? ?handleIconClick(ev) {
? ? ? ?window.open('https://www.baidu.com/','_self');
? ? },
? ? onClick(item,index){
? ? ? console.log(item,index)
? ? ? // console.log(this.list)
? ? ? item.seen=true;
? ? ? this.$set(this.list,index,item);
? ? ? console.log(this.list)
? ? }
? }
? ,
? directives: {
? clickOutside : {
? bind(el, binding, vnode) {
? ? function clickHandler(e) {
? ? ? if (el.contains(e.target)) {
? ? ? ? return false;
? ? ? }
? ? ? if (binding.expression) {
? ? ? ? binding.value(e);
? ? ? }
? ? }
? ? el.__vueClickOutside__ = clickHandler;
? ? document.addEventListener('click', clickHandler);
? },
? update() {},
? unbind(el, binding) {
? ? document.removeEventListener('click', el.__vueClickOutside__);
? ? delete el.__vueClickOutside__;
? },
? }
}
};
</script>
<style lang="less" scoped>
.testPage {
? width: 100%;
? height: 100%;
? .el-input--width{
? ? border-radius: 20px;
? ? width: 100px;
? }
? .block{
? ? width: 100px;
? ? height: 100px;
? ? background-color: #f90;
? }?
}
</style>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vuecli4配置sass與less詳解

    vuecli4配置sass與less詳解

    這篇文章主要為大家介紹了vuecli4配置sass與less詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • vue如何遍歷data所有變量并賦值

    vue如何遍歷data所有變量并賦值

    這篇文章主要介紹了vue如何遍歷data所有變量并賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue router 組件的高級(jí)應(yīng)用實(shí)例代碼

    vue router 組件的高級(jí)應(yīng)用實(shí)例代碼

    這篇文章主要介紹了vue-router 組件的高級(jí)應(yīng)用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 深入理解Vue的數(shù)據(jù)響應(yīng)式

    深入理解Vue的數(shù)據(jù)響應(yīng)式

    Vue.js的核心包括一套“響應(yīng)式系統(tǒng)”?!绊憫?yīng)式”,是指當(dāng)數(shù)據(jù)改變后,Vue會(huì)通知到使用該數(shù)據(jù)的代碼。例如,視圖渲染中使用了數(shù)據(jù),數(shù)據(jù)改變后,視圖也會(huì)自動(dòng)更新。
    2021-05-05
  • TDesign在vitest的實(shí)踐示例詳解

    TDesign在vitest的實(shí)踐示例詳解

    這篇文章主要為大家介紹了TDesign在vitest的實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue中如何點(diǎn)擊獲取當(dāng)前元素下標(biāo)

    Vue中如何點(diǎn)擊獲取當(dāng)前元素下標(biāo)

    這篇文章主要介紹了Vue中如何點(diǎn)擊獲取當(dāng)前元素下標(biāo)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)

    vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑)

    這篇文章主要介紹了vue中$set的使用(結(jié)合在實(shí)際應(yīng)用中遇到的坑),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue3.2最新語(yǔ)法使用socket.io實(shí)現(xiàn)即時(shí)通訊詳解

    vue3.2最新語(yǔ)法使用socket.io實(shí)現(xiàn)即時(shí)通訊詳解

    這篇文章主要為大家介紹了vue3.2最新語(yǔ)法使用socket.io實(shí)現(xiàn)即時(shí)通訊詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 解決vue 更改計(jì)算屬性后select選中值不更改的問題

    解決vue 更改計(jì)算屬性后select選中值不更改的問題

    下面小編就為大家分享一篇解決vue 更改計(jì)算屬性后select選中值不更改的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue數(shù)字輸入框組件示例代碼詳解

    Vue數(shù)字輸入框組件示例代碼詳解

    很多朋友經(jīng)常遇到這樣的功能,只允許輸入數(shù)字,允許設(shè)置初始值、最大值、最小值,今天小編給大家分享示例代碼給大家介紹vue數(shù)字輸入框功能,感興趣的朋友一起看看吧
    2020-01-01

最新評(píng)論