美文网首页让前端飞Web前端之路
vue多页面跳转事件多次注册

vue多页面跳转事件多次注册

作者: 小光啊小光 | 来源:发表于2020-09-04 17:18 被阅读0次

    多页面跳转 A =>B =>A 即使都使用$router.place,回到A时,A里面用addEventListner注册的事件没移除,多次注册事件。

    • 方法 一

      /* 组件销毁前移除事件 */
      
      berforeDestroy(){
          removeEventListner(event, eventFun) 
      }
      // event : {string} 事件名(必须)
      // eventFunName: {function} 与这个事件绑定的函数(必须,addEventListner可以同时事件注册多个相应函数)
      
      /* 这就需要A页面中的每一个组件只要用到addEventListner注册事件,都需要这样写去主动销毁事件。*/
      /* removeEventListner不支持匿名函数: */
      ele.addEventListner('click',()=>{console.log('匿名函数')}) // 这种就没办法通过removeEventListner来移除,因为第二个参数必须,匿名函数没名字。
      
    • 方法 二

      /* 用on的方式注册事件 */
      
      ele.onclick = function(){}
      
      // on的方式注册事件是不可以重复的,即由B回到A时,虽然上次的事件没移除,但这次再注册就把上次的覆盖了。
      
    • 方法 三

      // 妥协方案,打开新的窗口。(但有些时候需求就是要打开新的窗口)
      // 即两个页面互不相干
      openNewWindow(){
         let routeUrl = this.$router.resolve({
           path: "/pageB",
           query: {id:96} //还可以带参数过去
         });
         window.open(routeUrl.href, '_blank');
      }
      

    相关文章

      网友评论

        本文标题:vue多页面跳转事件多次注册

        本文链接:https://www.haomeiwen.com/subject/wcftektx.html