vue自定义指令
vue的clikOut指令:点击弹框外面的空白处使弹框消失的自定义全局指令
- 代码
export const clickout = Vue.directive('clickout', {
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__
},
})
- 在main.js中引入
import './directives'
- 在组件内使用
<uf-input-el-wrap
ref="inputWrap"
v-clickout="clickOutHandler"
</uf-input-el-wrap>
methods:{
clickOutHandler() {
this.treeVisible = false
this.focus = false
},
}