vue3自定义指令
    		       		warning:
    		            这篇文章距离上次修改已过443天,其中的内容可能已经有所变动。
    		        
        		                
                在Vue 3中,可以通过directive函数或Directive类来创建自定义指令。以下是一个简单的自定义指令的例子,它的功能是给元素添加一个点击事件,并在点击时弹出一个警告框。
// 使用函数创建简单的自定义指令
const vClickOutside = Vue.directive('click-outside', {
  beforeMount(el, binding) {
    el.clickOutsideEvent = event => {
      // 判断点击是否发生在元素之外
      if (!el.contains(event.target)) {
        binding.value(event); // 调用传进来的函数
      }
    };
    document.addEventListener('click', el.clickOutsideEvent);
  },
  unmounted(el) {
    document.removeEventListener('click', el.clickOutsideEvent);
  },
});
 
// 或者使用类创建自定义指令
const vClickOutside = Vue.directive('click-outside').define({
  beforeMount(el, binding) {
    el.clickOutsideEvent = event => {
      if (!el.contains(event.target)) {
        binding.value(event);
      }
    };
    document.addEventListener('click', el.clickOutsideEvent);
  },
  unmounted(el) {
    document.removeEventListener('click', el.clickOutsideEvent);
  },
});
 
// 然后在Vue应用中使用这个指令
const app = Vue.createApp({});
app.directive('click-outside', vClickOutside);
app.mount('#app');在组件中使用这个自定义指令:
<template>
  <div v-click-outside="handleClickOutside">
    <!-- 点击此区域外将触发警告框 -->
    <div>点击我</div>
  </div>
</template>
 
<script>
export default {
  methods: {
    handleClickOutside() {
      alert('点击了外部!');
    }
  }
}
</script>这个自定义指令v-click-outside会在用户点击元素之外的任何地方触发一个事件,这个事件会调用绑定在该指令上的方法,在这个例子中是handleClickOutside。
评论已关闭