单页面web应用使用router跳转后会触发什么事件呢?

a380776767
  • 83
//路由配置
router.map({
    '/':{
        name:'a',
        component: a
    },
    '/details/':{
        name:'b',
        component: b
    }
});

需求是每次回到a组件时都要触发一个函数。当我从a组件跳转到bs组件然后再回退时a组件的window.onload就不会触发了,请问要怎么写才能实现每次从b回退到a都会触发这个函数?

回复
阅读 3.3k
4 个回答
枫s的思念
  • 2.4k
✓ 已被采纳

谢邀
在a组件中写入

route:{
    data(){
        //要执行的事件
    }
}

vue-router官方文档中写到关于dataactivate的区别:
data在每次路由变动时被调用,即使当前组件可以被重用的时候,但是activate仅在组件是新创建的时候才会被调用。
具体关于vue-router如何切换控制流水线可以参考:http://router.vuejs.org/zh-cn/pipeline/index.html

zhengxujiang
  • 139
route: {
  data: function (transition) {
    // 每次进来执行,用于加载和设置当前组件的数据
  }
}

参考

第一种方式是在组件a中添加route

route: {
    //transition变量提供相关路由信息
    data(transition){
    }
}

第二种方法是在路由全局拦截,对a做特殊处理

router.beforeEach(function(transition){
    if(transition.to === 'a'){}
})
宣传栏