vue页面跳转后返回原页面初始位置方法


Posted in Javascript onFebruary 11, 2018

vue页面跳转到新页面之后,再由新页面返回到原页面时候若想返回调出原页面的初始位置,怎么来解决这个问题呢?首先我们应该在跳出页面时候记录下跳出的scrollY,返回原页面的时候在设置返回位置为记录下的scrolly即可,scrolly我用的是vuex状态管理器来保存的。整个环境是基于vue-cli搭建的

一、main.js里面配置vuex

//引用vuex 
import Vuex from 'vuex' 
Vue.use(Vuex)

二、main.js里面vuex状态管理

var store = new Vuex.Store({ 
 state: { 
 recruitScrollY:0 
 }, 
 getters: { 
 recruitScrollY:state => state.recruitScrollY 
 }, 
 mutations: { 
 changeRecruitScrollY(state,recruitScrollY) { 
 state.recruitScrollY = recruitScrollY 
 } 
 }, 
 actions: { 
 
 }, 
 modules: {} 
})

这里列举一个listview页面和详情页面,listview页面就是原始页面,listview页面跳转到详情页面,然后返回时候回到跳转到详情页面之前的位置,在listview页面编写代码

beforeRouteLeave(to, from, next) { 
 let position = window.scrollY //记录离开页面的位置 
 if (position == null) position = 0 
 this.$store.commit('changeRecruitScrollY', position) //离开路由时把位置存起来 
 next() 
 }, 
 watch: { 
 '$route' (to, from) { 
 if (to.name === 'NewRecruit') {//跳转的的页面的名称是"NewRecruit",这里就相当于我们listview页面,或者原始页面 
 let recruitScrollY = this.$store.state.recruitScrollY 
 window.scroll(0, recruitScrollY) 
 } 
 } 
 }

四、若要避免created生命周期的执行,可以使用缓存keepAlive,这里也分享一下

(1)App.vue template

<keep-alive v-if="$route.meta.keepAlive"> 
 <router-view></router-view> 
 </keep-alive> 
 <router-view v-if="!$route.meta.keepAlive"></router-view>

(2)router index.js

Vue.use(Router) 
 
const routerApp = new Router({ 
 routes: [{ 
 { 
 path: '/NewRecruit', 
 name: 'NewRecruit', 
 component: NewRecruit, 
 meta: { 
 keepAlive: true 
 } 
 }, 
 { 
 path: '/NewRecruitDesc/:id', 
 name: 'NewRecruitDesc', 
 component: NewRecruitDesc, 
 meta: { 
 keepAlive: true 
 } 
 }, 
 { 
 path: '/SubmitSucess', 
 name: 'SubmitSucess', 
 component: SubmitSucess, 
 meta: { 
 keepAlive: false 
 } 
 } 
 ] 
}) 
 
export default routerApp

以上这篇vue页面跳转后返回原页面初始位置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一些相见恨晚的 JavaScript 技巧
Apr 25 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
javascript中Object使用详解
Jan 26 Javascript
原生js制作简单的数字键盘
Apr 24 Javascript
浅析js的模块化编写 require.js
Dec 07 Javascript
javascript读取文本节点方法小结
Dec 15 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
微信小程序 数据封装,参数传值等经验分享
Jan 09 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 Javascript
JQuery扩展对象方法操作示例
Aug 21 jQuery
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
Sep 12 Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 Javascript
使用vue-router设置每个页面的title方法
Feb 11 #Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
Feb 11 #Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 #Javascript
vue.js,ajax渲染页面的实例
Feb 11 #Javascript
Node.js使用MySQL连接池的方法实例
Feb 11 #Javascript
vue中引用阿里字体图标的方法
Feb 10 #Javascript
Express进阶之log4js实用入门指南
Feb 10 #Javascript
You might like
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php 获取全局变量的代码
2011/04/21 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
javascript 表单规则集合对象
2009/07/21 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
jquery $.each() 使用小探
2013/08/23 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
2020/04/03 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
python 列表删除所有指定元素的方法
2018/04/19 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
Python基于内置函数type创建新类型
2020/10/22 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
什么是反射
2012/03/17 面试题
新闻编辑自荐信
2013/11/03 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
建筑工地标语
2014/06/18 职场文书
法定代表人资格证明书
2014/09/11 职场文书
2014年除四害工作总结
2014/12/06 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
vscode中使用npm安装babel的方法
2021/08/02 Javascript