| 123456789101112131415161718192021222324252627 |
- import Vue from 'vue';
- // 定义全局自定义指令
- Vue.directive('submit-once', {
- bind(el, binding, vnode) {
- el.addEventListener('click', async () => {
- if (el.disabled) return;
- // 禁用按钮并显示加载状态
- el.disabled = true;
- const originalText = el.innerHTML;
- el.innerHTML = '<i class="el-icon-loading"></i> 提交中...';
- try {
- // 调用传入的提交方法
- if (typeof binding.value === 'function') {
- await binding.value();
- }
- } catch (error) {
- console.error('提交出错:', error);
- } finally {
- // 恢复按钮状态
- el.disabled = false;
- el.innerHTML = originalText;
- }
- });
- }
- });
|