需求:从产品列表页进入产品详情页,然后当页面返回时还是列表页的内容和页面位置(页面不需要重新加载);
做法:在点击产品进行组件渲染详情页时获取scrollTop,然后等页面返回再进行window.scrollTo(x,y);操作,但是我发现绑定点击事件时取到的scrollTop=0;(此时详情页已经渲染了,所以列表页的scroll值就丢失了),所以大家是怎么做的,我刚刚接触vue,好多东西不是很清晰!
需求:从产品列表页进入产品详情页,然后当页面返回时还是列表页的内容和页面位置(页面不需要重新加载);
做法:在点击产品进行组件渲染详情页时获取scrollTop,然后等页面返回再进行window.scrollTo(x,y);操作,但是我发现绑定点击事件时取到的scrollTop=0;(此时详情页已经渲染了,所以列表页的scroll值就丢失了),所以大家是怎么做的,我刚刚接触vue,好多东西不是很清晰!
看你的描述,其实并不需要获取scrollTop,只要在vue-router中加入以下代码就可以满足你的需求
scrollBehavior: function(to, from, savedPosition){
if (savedPosition) {
return savedPosition
}
}
可参考:滚动行为
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
可以参考:https://router.vuejs.org/zh-c...
默认情况下,点击返回滚动条位置是会保持在原来位置的,不用去设置吧。
或者你可以用导航钩子:
router.beforeEach((to, from, next) => {//路由变化前执行的函数
}