当前页面以下html
而后点击页码跳到第3页,而后在第三页点击页面连接跳转到新的页面vue
而后在新页面点击返回按钮,返回到当前页,结果页面分页显示第一页,对应页面内容也是第一页element-ui
重新页面返回的时候,页码和页面内容仍旧保持在跳转离开前的样子。session
//给sessionStorage存值 setContextData: function(key, value) { if(typeof value == "string"){ sessionStorage.setItem(key, value); }else{ sessionStorage.setItem(key, JSON.stringify(value)); } }, // 从sessionStorage取值 getContextData: function(key){ const str = sessionStorage.getItem(key); if( typeof str == "string" ){ try{ return JSON.parse(str); }catch(e) { return str; } } return; }
分页代码测试
而后将currentPage在每次点击页码的时候存到sessionStorage里ui
这里解释下,qryTableData()是我定义的请求接口交易,刷新页面内容的方法。spa
而后在当前页的created生命周期里从sessionStorage里面取currentPage。3d
这样,咱们再返回当前页的时候,页面内容将会是跳转离开前的样子。code
可是至此工做仅仅完成一半,由于咱们发现这个bug并无彻底解决htm
问题形成缘由
咱们返回当前页面取得总条数totalNum的以前,element-ui的分页组件已经在页面加载完毕,当时的totalNum绑定的是data里面初始化的数据0,因此当总条数为0的时候,分页组件的页码默认为1。而且当totalNum在created生命周期里取得数据后,分页组件也不会刷新。因此这就致使, 页面内容正确,可是页码高亮依旧是第一页
解决办法
咱们须要在created以后刷新这个分页组件或者让分页组件的html后于created以后加载到页面。
再次刷新这个分页组件是不现实的,咱们选择在created以后加载分页组件。具体办法就是使用v-if。在totalNum不为data里面给的初始值0的时候,才让这段html加载到页面。
而后再次测试,发现完美解决问题。
后续:
这里为何用的是v-if而不是v-show。这就是每一个vue初学者须要明白的事情了,就是v-if和v-show的区别。嘿嘿😁
特别感谢@Deguang大神,在他的指导下,才踩出了这个element-ui的坑🙂