背景:公司前端框架做了请求状态背景图层(也是限制冗余触发),因此暂时未考虑单次触发禁用的场景,但是测试人员偶有反应手速快的时候会触发两次。以往没有写过vue相关的纪要,为此纪要一下。
问题:vue如何避免对@Click事件的重复调用?
实现思路:
	1. 给当前的触发dom一个disable属性,并为其配置一个公共默认为false不会开启的flag公量.
	2. 继续给当前的触发dom一个click事件,用来开启dom的disable属性.此时用户便不能二次触发.
	3. 如何关闭?
		由于本例中会有二级面板弹窗,所以单独给了一个关闭disable的事件.
		如果是其他的方式,如http请求,可以等待数据返回后在恢复disable的关闭状态.
解决办法:
    使用:disabled对事件的触发进行控制。
<!-- DOM层 -->
<a v-if="!!scope.row.xx" title="详情" @click="earch()" :disable=expressData.flag>实时查询</a>
/** JavaScript */ 
export default {
    data() {
        return {
          expressData: { 
            flag: false
          },
        };
    },
    methods: {
        earchB() {
          this.expressData.flag = false;
          // Codding...
        },
        earch() { 
            this.expressData.flag = true;
            this.earchB();
          // Codding...
        },
    },
};
注意点:调用开始后要重新设值回false,否则状态不会发生变化。

 

Logo

前往低代码交流专区

更多推荐