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

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)文章

  • vue-pdf如何通過文件流預(yù)覽pdf文件

    vue-pdf如何通過文件流預(yù)覽pdf文件

    這篇文章主要介紹了vue-pdf如何通過文件流預(yù)覽pdf文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue中如何實(shí)現(xiàn)proxy代理

    Vue中如何實(shí)現(xiàn)proxy代理

    本篇文章主要介紹了Vue中如何實(shí)現(xiàn)proxy代理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Vue2設(shè)置hash模式的操作步驟

    Vue2設(shè)置hash模式的操作步驟

    在 Vue.js 應(yīng)用中使用 hash 模式是一種常見的路由配置方式,這種方式利用了 URL 的 hash(即 # 符號(hào)后面的部分)來實(shí)現(xiàn)頁面的跳轉(zhuǎn)和狀態(tài)管理,以下是使用 Vue 2 和 Vue Router 設(shè)置 hash 模式的步驟,需要的朋友可以參考下
    2024-10-10
  • vue實(shí)現(xiàn)微信公眾號(hào)h5跳轉(zhuǎn)小程序的示例代碼

    vue實(shí)現(xiàn)微信公眾號(hào)h5跳轉(zhuǎn)小程序的示例代碼

    本文主要介紹了vue實(shí)現(xiàn)微信公眾號(hào)h5跳轉(zhuǎn)小程序的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue-router 中 meta的用法詳解

    vue-router 中 meta的用法詳解

    今天小編就為大家分享一篇vue-router 中 meta的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 5個(gè)Vue3阻止事件冒泡的方法

    5個(gè)Vue3阻止事件冒泡的方法

    在?Vue3?項(xiàng)目開發(fā)中,事件冒泡經(jīng)常會(huì)導(dǎo)致一些意想不到的問題,本文為大家整理了五個(gè)Vue3中阻止事件冒泡的方法,希望對(duì)大家有一定的幫助
    2024-11-11
  • Vue如何調(diào)用接口請(qǐng)求頭增加參數(shù)

    Vue如何調(diào)用接口請(qǐng)求頭增加參數(shù)

    這篇文章主要介紹了Vue如何調(diào)用接口請(qǐng)求頭增加參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 關(guān)于el-form表單驗(yàn)證中的validator與validate使用時(shí)的問題

    關(guān)于el-form表單驗(yàn)證中的validator與validate使用時(shí)的問題

    這篇文章主要介紹了關(guān)于el-form表單驗(yàn)證中的validator與validate使用時(shí)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 區(qū)分vue-router的hash和history模式

    區(qū)分vue-router的hash和history模式

    這篇文章主要介紹了區(qū)分vue-router的hash和history模式,幫助大家更好的理解和學(xué)習(xí)vue路由,感興趣的朋友可以了解下
    2020-10-10
  • vue實(shí)現(xiàn)大文件分片上傳與斷點(diǎn)續(xù)傳到七牛云

    vue實(shí)現(xiàn)大文件分片上傳與斷點(diǎn)續(xù)傳到七牛云

    這篇文章介紹了vue實(shí)現(xiàn)大文件分片上傳與斷點(diǎn)續(xù)傳到七牛云的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

衡东县| 萨迦县| 中牟县| 洛隆县| 黑水县| 双桥区| 甘孜县| 平江县| 临朐县| 昌邑市| 西乌珠穆沁旗| 罗源县| 岚皋县| 黎平县| 雅安市| 义马市| 长宁区| 鱼台县| 中超| 新竹市| 汉沽区| 贵阳市| 景德镇市| 安化县| 阜康市| 海林市| 皋兰县| 牡丹江市| 千阳县| 余姚市| 射洪县| 根河市| 章丘市| 昭觉县| 广西| 石首市| 景洪市| 沈阳市| 铁岭县| 云梦县| 南澳县|