方法一:
1.common.js
首先引入Vue
import Vue from 'vue';
const preventReClick = Vue.directive('preventReClick', {
inserted: function (el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true
setTimeout(() => {
el.disabled = false
}, binding.value || 3000)
}
console.log(el.disabled)
})
}
});
export {
preventReClick
}
2.在需要引入的页面引入(**.vue)
在按钮上添加v-preventReClick
<el-button v-preventReClick>确定</el-button>
从common.js导入指令preventReClick
import preventReClick from '../common' //防多次点击,重复提交
方法二:
1.创建一个clickStatefrom.js文件
写上vue 全局指令
//clickStatefrom.js文件
export default {
install (Vue) {
// 防止重复点击
Vue.directive('preventClick', {
inserted (el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true
setTimeout(() => {
el.disabled = false
}, 6000)
}
})
}
})
}
}
2.在main.js 入口文件引用
import preventClick from './utils/clickStatefrom' // 根据自己的路径
Vue.use(preventClick)
3.然后就可在全局使用了
<button @click="educe" v-preventClick >导出</button>
解释说明:
明确一点,自定义指令解决的问题或者说使用场景是对普通 DOM 元素进行底层操作,所以我们不能盲目的胡乱的使用自定义指令。