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

多页面跳转 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');
    }
    

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。