局部使用
<template>
<div class="cus-table" v-resize="resize">
</div>
</template>
<script>
export default {
directives: {
// 使用局部注册指令的方式
resize: {
// 指令的名称
bind(el, binding) {
// el为绑定的元素,binding为绑定给指令的对象
let width = '',
height = ''
function isReize() {
const style = document.defaultView.getComputedStyle(el)
if (width !== style.width || height !== style.height) {
binding.value() // 关键
}
width = style.width
height = style.height
}
el.__vueSetInterval__ = setInterval(isReize, 300)
},
unbind(el) {
clearInterval(el.__vueSetInterval__)
},
},
},
data() {
return {}
},
methods:{
// 元素发生变化后执行
resize () {
console.log('我变了')
},
},
}
</script>