vue3自定义指令
在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
。
评论已关闭