我有一个Vue组件,我需要body元素具有overflow:none,但其余页面应该具有overflow:auto。由于主体位于组件的外部,因此组件内部的作用域css不会应用于主体。我的解决方案是在进入页面时在路由中设置css,并在离开页面时撤消它。
{
path: '/report',
name: 'Report',
component: Report,
meta: { requiresAuth: true },
beforeLeave: (to, from, next) => {
console.log('before leave')
$('body').css('overflow', 'auto');
// next()
},
beforeEnter: (to, from, next) => {
$('body').css('overflow', 'hidden');
next()
}
},
触发beforeEnter函数,然后将CSS应用于主体。但是,beforeLeave函数不会触发,当我返回该站点的其余部分时,它的主体仍然具有溢出:隐藏。我只能按“后退”按钮离开页面,这不会触发beforeLeave函数吗?我还尝试像vue路由器文档中所说的那样将其更改为beforeRouteEnter和beforeRouteLeave,但这不起作用,并且beforeLeave也停止工作。我还尝试将vue-router和vue更新到最新版本。
您可以仅使用以下beforeRouteLeave
防护措施in-component
:
beforeRouteLeave(to, from, next) {
$('body').css('overflow', 'auto');
next()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句