当前位置: 首页 > news >正文

b s做的是网站吗宣传推广方案模板

b s做的是网站吗,宣传推广方案模板,企业网站开发php,html如何做阿拉伯网站继《vue之全局请求loading》之后,总觉得全局loading有时候不太…友好,所以总想将loading加到被点击的元素上面,于是乎就想到了点击事件与请求方法相关联,本想重写组件的click方法,但是这样对组件的影响太大&#xff0c…

继《vue之全局请求loading》之后,总觉得全局loading有时候不太…友好,所以总想将loading加到被点击的元素上面,于是乎就想到了点击事件与请求方法相关联,本想重写组件的click方法,但是这样对组件的影响太大,所以放弃了,最终想到了Vue全局指令。

一、实现原理

通过全局指令代替组件事件,在全局指令中绑定click事件,当dom被点击时,给dom添加禁用状态,利用闭包等方式获取到绑定的方法,通过await等待方法执行完毕然后去掉禁用;

二、使用

@click替换为v-con-click

<el-button type="primary" icon="el-icon-search" size="mini" v-con-click="handleQuery">搜索</el-button>

三、注意事项

1. 同步和异步回调只能选一种

同步通过await来等待去除禁用,而异步回调则是由自己判断去掉禁用。

同步(没有传参):

handleQuery(e) {console.log(e); // 没有传参时,默认为点击事件this.queryParams.pageNum = 1;await this.getList();
}

异步回调(没有传参):

handleQuery() {console.log(e); // 没有传参,默认为点击事件return (removeDisabled) => {this.queryParams.pageNum = 1;this.getList().then(res => {// 去掉组件禁用removeDisabled();})}
}

2. 异步回调需闭包

因需要回传回调方法,所以需添加一层闭包;

3. 有传参的方法需闭包

因有参数的方法相当于绑定时会自动执行一遍,所以添加闭包,来获取执行代码。

handleQuery(d) {return (removeDisabled) => {this.queryParams.pageNum = 1;this.getList().then(res => {// 去掉组件禁用removeDisabled();})}
}

所以对于有参数的方法异步回调就相当于两次闭包

handleQuery(d) {return (e) => {console.log(e); // 点击事件return (removeDisabled) => {// 去掉组件禁用removeDisabled();}}
}

3. 其他问题

因想法特殊,可能会出现未知问题,目前暂未发现其他问题,如有问题,欢迎即使提出。

四、代码

const conClickDirective = {bind(el, binding, vnode) {el.addEventListener('click', async e => {let hasCb = false;el.classList.add('is-disabled');el.disabled = true;// 这里写点击事件的逻辑if (binding.value instanceof Function) {const res = await binding.value(e);if (res instanceof Function) {const d = res(() => {el.disabled = false;el.classList.remove('is-disabled');})if (!(d instanceof Promise)) {hasCb = true;} else {await d;}}}if (!hasCb) {el.disabled = false;el.classList.remove('is-disabled');}});}
};// 全局注册自定义指令
Vue.directive('con-click', conClickDirective);

五、进阶版

进阶版:《Vue全局事件防止重复点击(等待请求)【进阶版】》

http://www.tj-hxxt.cn/news/84632.html

相关文章:

  • 怎么免费网做百度收录的网站吗怎么提升关键词的质量度
  • dwcs5怎么做动态网站后台新营销模式有哪些
  • 动态ip代理伟哥seo博客
  • 门户网站概念苏州网站开发公司
  • 两学一做网站专题沈阳seo
  • 蜜雪冰城网络营销推广方案百度网站排名seo
  • 莱州哪有做网站的爱站网查询
  • 广州做网站做得比较好如何免费引流推广
  • 网站构架怎么做长沙好的seo外包公司
  • 商务网站网络环境设计推广百度百科
  • 宾川网站建设磁力搜索器kitty
  • 如何搭建门户网站app推广方案模板
  • 南京做网站设计3小时百度收录新站方法
  • qq刷赞网站如何做分站推一手新闻发稿平台
  • 广东企业网站建设公司百度关键词价格怎么查询
  • 注销主体备案与网站备案软件开发外包
  • 沾化网站建设职业培训学校加盟合作
  • 南阳建设网站制作东莞搜索优化十年乐云seo
  • 百度网站大全旧版谷歌推广开户多少费用
  • 网站宜昌南宁seo推广公司
  • 做羞羞的网站长沙网站seo收费标准
  • 大庆建设局网站免费seo公司
  • 交友视频网站建设舆情信息报送
  • app开发模板网站怎么做网站免费的
  • 昆山网站建设哪家便宜如何做网页链接
  • 著名室内设计网站大全windows优化大师
  • 武汉专业网站设计搜索引擎的三个技巧
  • 阿里做网站怎么做湖北百度推广电话
  • 公司做网站一般定制网站和模板建站
  • 企业手机网站建设案例网站怎么推广