Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项
页面跳转反显(点击项,点击table滚动的位置,搜索条件,分页回显)
点击table tr项后,页面跳转到下级页面,返回回显搜索条件、当前页码、并将点击项select选中、滚动条也被记录回显跳转时滚动的位置
思路:
1.页面临时缓存我选择使用sessionStorage,点击tr行将搜索条件和页码,点击行的id进行存储;
setSessionStore (name, content) {
if (!name) return
if (typeof content !== 'string') {
content = JSON.stringify(content)
}
window.sessionStorage.setItem(name, content)
},
getSessionStore (name) {
if (!name) return;
var content = window.sessionStorage.getItem(name);
if (typeof content == 'string') {
content = JSON.parse(content)
}
return content;
},
removeSessionStore (name) {
if (!name) return
return window.sessionStorage.removeItem(name)
}
}
2.进入页面取出sessionStorage,在init请求返回值后,进行table选中、分页回显;
data(){
return {
paginationShow: false, 控制分页器显示 页面中使用v-if
pager:{
total: 0,
currentPage: 1,
pageSize: 20,
}
}
}
控制分页器显示的原因:vue-element-ui项目分页,在返回默认分页高亮样式不会回显......
造成的原因:我们返回当前页面取得总条数totalNum之前,element-ui的分页组件已经在页面加载完毕,当时的totalNum绑定的是data里面初始化的数据0,所以当总条数为0的时候,分页组件的页码默认为1。并且当totalNum在created生命周期里取得数据后,分页组件也不会刷新。所以这就导致, 页面内容正确,但是页码高亮依旧是第一页。
解决办法:我们需要在created之后刷新这个分页组件或者让分页组件的html后于created之后加载到页面。再次刷新这个分页组件是不现实的,我们选择在created之后加载分页组件。具体办法就是使用v-if。在totalNum不为data里面给的初始值0的时候,才让这段html加载到页面。
init () {
axios.post('/url',param).then(function (response) {
// 进行数据复制loading等操作
if(!myVM.paginationShow){
if(myVM.storeId){
**myVM.$nextTick(function(){**
var storage = [];
myVM.dataTable.forEach(function(item, index){
if(item.clueId === myVM.storeId ){
storage.push(myVM.dataTable[index]);
}
})
myVM.toggleSelection(storage);
// 根据存储的滚动位置,将table滚动位置回显在页面上
**myVM.$el.querySelector('.el-table__body-wrapper').scrollTop = mycustomVM.scrollTop; **
})
}
}else{
myVM.removeSessionStore ("storeForm");
myVM.removeSessionStore ("otherVal");
}
mycustomVM.paginationShow = true;
mycustomVM.storeForm = mycustomVM.form;
})
},
toggleSelection(rows) { // table select 默认选中
if (rows) {
rows.forEach(row => {
this.$refs.multipleTable.toggleRowSelection(row,true);
});
} else {
this.$refs.multipleTable.clearSelection();
}
},
toLink(row){ // 跳转进行存储
var clueId=row.clueId;
this.setSessionStore("storeForm", this.storeForm);
var otherVal = {
"currentPage": this.pager.currentPage,
"clueId": clueId,
"scrollTop": **this.$el.querySelector('.el-table__body-wrapper').scrollTop**
}
this.setSessionStore("otherVal", otherVal);
window.location.href='跳转链接,可携带参数';
},
mounted(){
document.getElementById('myVue').style.display = 'block';
},
created(){ // 进入页面判断有是否有存储值,取出后,进行初始化init函数
if(!this.paginationShow){
var storeVal = this.getSessionStore("storeForm");
var otherVal = this.getSessionStore("otherVal");
if(storeVal && otherVal){
this.form = storeVal;
this.$set(this.pager,"currentPage",otherVal.currentPage);
this.storeId = otherVal.clueId;
this.scrollTop = otherVal.scrollTop;
}
}
}
window.sessionStorage.clear(); // 点击侧边栏、退出时-清除所有cookie(如果账号被挤掉,退出的时候需要多考虑一下)
实现思路是这样,具体代码要根据实际项目开发
Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项的更多相关文章
- vue + element ui 阻止表单输入框回车刷新页面
问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...
- Vue+element ui table 导出到excel
需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...
- vue + element ui 表格自定义表头,提供线上demo
前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...
- vue+element ui 的表格列使用组件
前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...
- vue+element ui 的tab 动态增减,切换时提示用户是否切换
前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui 有一个 bug,这里记录一下如何实现.转载 ...
- vue + element ui 实现实现动态渲染表格
前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...
- vue+element ui 的上传文件使用组件
前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...
- vue+element ui 的时间控件选择 年月日时分
前言:工作中用到 vue+element ui 的前端框架,需要选择年月日时分,但element ui官网demo有没有,所以记录一下.转载请注明出处:https://www.cnblogs.com/ ...
- Vue+Element UI 实现视频上传
一.前言 项目中需要提供一个视频介绍,使用户能够快速.方便的了解如何使用产品以及注意事项. 前台使用Vue+Element UI中的el-upload组件实现视频上传及进度条展示,后台提供视频上传AP ...
随机推荐
- Chrome 浏览器光标定位到地址栏
Windows: Ctrl + L 或 Alt + D Mac: Command + L Linux: Ctrl + L
- [转帖]Oracle数据安全--校验Oracle安装软件的 SHA码 防范注入风险
Oracle数据安全--校验Oracle安装软件的 SHA码 防范注入风险 https://www.toutiao.com/i6723512458482303499/ certutil md5sums ...
- K8S从入门到放弃系列-(8)kube-apiserver 高可用配置
摘要: 前面几篇文章,就是整个的master节点各组件的部署,上面我们提到过,k8s组件中,kube-controller-manager.kube-scheduler及etcd这三个服务高可用,都是 ...
- 02 servlet基础 生命周期 tomcat web.xml
新建web项目 – new Web Project – 选择:javaee 5.0 建包 – com.gzsxt.wang 新建class:FirstServlet – 继承:HttpServlet( ...
- MogliFS与spring mvc结合简单示例
一.MogliFS 与Spring结合配置请参照上文 二.上传页面 <%@ page language="java" contentType="text/html; ...
- hdu 6377 度度熊看球赛 (dp)
大意: $n$对情侣, $2n$个座位, 对于一个方案, 若$k$对情侣相邻, 则喧闹值增加$D^k$, 求喧闹值期望. 跟CF 840C一样, 设$dp[i][j]$为$i$个人, 有$j$对情侣相 ...
- (一)ORM基础
一.ORM思想解析 要了解学习Hibernate框架,就不得不提到ORM思想,因为Hibernate就是基于ORM思想的一个产品. 1.1 介绍 广义上,ORM指的是面向对象的对象模型和关系型数据库的 ...
- (七)发送、接收SOAP消息(以HttpClient方式)(2)
一.为什么要用soap 原本我们使用web服务都是根据wsdl生成客户端(生成一堆java文件)然后再调用,本章节讲解如何用soap消息来替代这种方式. 二.SOAP消息格式 SOAP(简单对象访问协 ...
- element之 el-scrollbar组件滚动条的使用
在使用vue + element-ui 搭建后台管理页面的时候,做了一个头部.侧栏.面包屑固定的布局,导航栏和主要内容区域当内容超出时自动滚动.
- flutter packages get 慢 解决方案
国内使用 flutter packages get 命令,一直是 This is taking an unexpectedly long time 状态 科.学.上.网.无.效. windows解决 ...