vue中bus.$on事件被多次绑定

问题描述:只要页面没有强制刷新,存在组件切换,bus.$on方法会被多次绑定,造成事件多次触发

解决办法一:在每次调用方法前先解绑事件( bus.$off ),然后在重新绑定( bus.$on )

bus.$off(‘pagechangep‘); //先解绑,不然会多次出发
bus.$on(‘pagechangep‘,function(i){
      that.publishpageTo(i);
});

解决办法二:注册的总线事件(Bus)要在组件销毁时(beforeDestroy/destroyed)卸载,否则会多次挂载,造成触发一次但多个响应的情况

beforeDestroy () {
  bus.$off("backUpLevel");
}

原文地址:https://www.cnblogs.com/shirliey/p/11327126.html

时间: 2024-10-02 18:45:44

vue中bus.$on事件被多次绑定的相关文章

vue中常用的事件和修饰符简单总结

1:阻止冒泡事件 JS事件流其中一种是冒泡事件,当一个元素被触发一个事件时,该目标元素的事件会优先被执行,然后向外传播到每个祖先元素,恰如水里的一个泡泡似的,从产生就一直往上浮,到在水平面时,它才消失.在这个过程中,如果你只希望事件发生在目标元素,而不想它传播到祖先元素上去,那么你需要在"泡泡"离开对象之前刺破它. 在vue中怎么写? 2:阻止默认行为 在vue中怎么写? 3:键盘事件 获取键码?通过事件对象来获取 注意:keydown事件和keyup事件的区别? keydown是在键

记一笔vue中的中央事件总线的问题,以及解决方案

代码结构:首先HeaderNav组件是被单独拎出来的,router-view中就对应了内容组件,由于有时候i有的界面的header内容是不一样的,因此要用到兄弟组件的相互通信,这个时候我首先选择了bus[中央事件总线] <div class="" v-if="!showScan"> <HeaderNav/> <router-view/> </div> 问题描述:就是在页面上用按钮点击切换路由的时候了,header是可以

vue中的滚动事件

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script src="js/vue.js" type="text/javascript" charset="utf-8"></script>

vue中使用触摸事件,上滑,下滑,等

第一步,下载一个包 npm install kim-vue-touch -s 在当前项目中下载包 第二部 import vueTouch from 'kim-vue-touch' Vue.use(vueTouch) kim-vue-touch提供了点击.长按.左滑.右滑.上滑.下滑等事件, 当你不需要传参时可以通过v-tap="vueTouch"的形式调用方法, 当你需要传参时v-tap="(e)=>vueTouch('点击',e)"的方式调用,e是event

vue中触发键盘事件的两种方法和如何自定义键位事件,完整代码!

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

vue中的阻止事件冒泡

stop阻止事件冒泡 prevent阻止系统默认事件 once只添加一次事件 <div :id="msg" @click.prevent.stop.once="method()">a</div> 原文地址:https://www.cnblogs.com/H5lcy/p/11650806.html

vue中的键盘事件

@keydown(键盘按下时触发),@keypress(键盘按住时触发),@keyup(键盘弹起) 获取按键的键码 e.keyCode @keyup.13     按回车键 @keyup.enter 回车 @keyup.up    上键 @keyup.down  下键 @keyup.left     左键 @keyup.right    右键 @keyup.delete    删除键 原文地址:https://www.cnblogs.com/xuepei/p/11988371.html

vue中,class、内联style绑定

1.绑定Class ①对象语法 <li :class="{ 'active': activeIdx==0 }" @click="fnClickTab(0)">产品特色</li> ②数组语法 <div v-bind:class="[classA, classB]"> 三元表达式: <div v-bind:class="[classA, isB ? classB : '']"> 表明

横冲直撞vue(第三篇):vue中template的三种写法、v-bind、v-on、更新元素的指令v-text与v-html、条件渲染指令v-if 与v-show、v-for

一.vue中template的三种写法 第一种(字符串模板写法): 直接写在vue构造器里,这种写法比较直观,适用于html代码不多的场景,但是如果模板里html代码太多,不便于维护,不建议这么写. <body> <div id="app"></div> <script src="./lib/vue.js"></script> <script type="text/javascript&qu