请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

如何在路由里取消layout的布局?

比如我有一个子路由有一个不同的头部导航,我需要取消默认的layout,是通过在子路由里的created阶段通过bus发送一个事件, layout页面接收这个事件,来改变显示?  这样能行吗? 另外路由的切换会触发生命周期的钩子吗?希望老师给我一个答案

正在回答

1回答

fishenal 2017-12-04 10:01:58

你这个做法逻辑太复杂了,如果有几种layout,就写几个layout模板,new的时候调一个空的App组件,layout根据页面调不同的,layout可以做一个动态组件,componnt :is 这种,Layout是一个变量动态切换。


路由的钩子,别用组件的钩子,用这个:

https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate (to, from, next) {    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave (to, from, next) {    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}


1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号