element-ui table 的翻页记忆选中
公司中台项目刚开始开发,用了vue+element,需要许多前置调研,table的翻译记忆选中就是其中之一。
template:
<el-table
:ref="tableRef"
:data="tableData"
@select-all="handleSelect"
@select="handleSelect"
>
<el-table-column
type="selection"
width="55"
>
</el-table-column>
<el-table-column
v-for="item in tableColumns"
:key="item"
:property="item.property"
:label="item.label"
:width="item.width"
>
</el-table-column>
</el-table>
<el-pagination
layout="total,prev, pager, next, jumper"
:page-size="5"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:total="10">
</el-pagination>
tableRef 是上级传入的props,为了区分多个表格同时存在的情况。
tableData 和 tableColumns 都是从组件外传入的,不难理解。
将 select 和 select-all 事件集中到同一个事件 handleSelect, 因为用到的数据都是该事件返回的 row 。
翻页的 currentPage 和 handleCurrentChange 是翻页组件的当前页和页码改变的事件。
methods:
handleSelect(val){
const hasSave = this.selected.find(item => {
return item.page === this.currentPage
})
if(hasSave){
hasSave.rows = this.tableData.filter(item => {
return val.includes(item)
})
}else{
this.selected.push({
page: this.currentPage,
rows: val
})
}
},
handleCurrentChange(val){
// 向上传递事件
this.$emit('pageChange',val)
},
toggleSelection(){
this.$refs[this.tableRef].clearSelection()
const target = this.selected.find(item => {
return item.page === this.currentPage
})
if(!target) return
const rows = target.rows
if(rows && rows.length>0){
this.$nextTick(()=>{
rows.forEach(row => {
this.$refs[this.tableRef].toggleRowSelection(row)
})
})
}
},
getSelected(){
if(this.selected.length === 0){
return []
}
let result = []
this.selected.forEach(item => {
result = [...result,...item.rows]
})
return result
}
当页码改变时,传递数据到外层请求数据,在本组件watch tableData的变化
watch: {
tableData(){
this.toggleSelection()
}
},
最后获取执行具体逻辑就不解释了,都是比较简单的,有需要可以留言或者私信。
element-ui table 的翻页记忆选中的更多相关文章
- Vue+element ui table 导出到excel
需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...
- element ui 表格提交时获取所有选中的checkbox的数据
<el-table ref="multipleTable" :data="appList" @selection-change="changeF ...
- VUE -- 对 Element UI table中数据进行二次处理
时间——日期 后台经常给我们返回的是 时间戳 (例如:1535620671) 这时候我们页面展现的时候需要将时间戳转换为我们要的格式 例如 (YYYY-MM-DD HH:mm:ss) 如果是在Elem ...
- Vue 基于node npm & vue-cli & element UI创建vue单页应用
基于node npm & vue-cli & element UI创建vue单页应用 开发环境 Win 10 node-v10.15.3-x64.msi 下载地址: https ...
- Element UI table组件源码分析
本文章从如下图所示的最基本的table入手,分析table组件源代码.本人已经对table组件原来的源码进行削减,源码点击这里下载.本文只对重要的代码片段进行讲解,推荐下载代码把项目运行起来,跟着文章 ...
- Element UI table参数中的selectable的使用
Element UI table参数中的selectable的使用中遇到的坑:页面: <el-table-column :selectable='selectable' type="s ...
- Element ui 中使用table组件实现分页记忆选中
我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...
- element UI table 过滤 筛选问题
一.问提描述 使用elementUI table 官方筛选案例,发现筛选不是服务器端筛选,而是浏览器端对每一页进行单独筛选. 如何在服务器端筛选? 二.查询Element UI 官网table组 ...
- element ui table 导出excel表格
https://blog.csdn.net/u010427666/article/details/79208145 vue2.0 + element UI 中 el-table 数据导出Excel1. ...
随机推荐
- OSS跨同城3AZ重磅发布,构造全面数据保护体系
点击订阅新品发布会! 新产品.新版本.新技术.新功能.价格调整,评论在下方,下期更新!关注更多内容,了解更多 最新发布 OSS跨同城3AZ重磅发布 2019年7月3日15时,OSS跨同城3AZ重磅发布 ...
- Tcp之双向通信
TestServer.java package com.sxt.tcp; /* * 服务端 */ import java.io.DataInputStream; import java.io.Data ...
- PHP笔试题(11道题)详解
题目一 <?php echo -10%3; ?> 答案:-1. 考查:优先级. 因为-的优先级比%求余的优先级低, 也就是-(10%3). 2 题目二: print (int)pow(2, ...
- oracle函数 VSIZE(X)
[功能]返回X的大小(字节)数 [参数]x select vsize(user),user from dual; 返回:6 asdied select length('adfad合理') " ...
- 学习微信小程序
1.从小程序指南文档开始看起:小程序指南 2.开发者工具下载:小程序开发工具
- hdu 5744 Keep On Movin (2016多校第二场)
Keep On Movin Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- H3C V.35接口线缆
- oracle优化EXPORT和IMPORT
使用较大的BUFFER(比如10MB , 10,240,000)可以提高EXPORT和IMPORT的速度. ORACLE将尽可能地获取你所指定的内存大小,即使在内存不满足,也不会报错.这个值至少要和表 ...
- Lecture Collection
Distributed ML Yibo Zhu 主要讲了如何分布式的进行机器学习,主要用到的思想是指令的流水调度的相关的思想. IoT Zhenjiang Li 普通的各种卡是基于PIN来进行身份验证 ...
- Python--day68--Django ORM的字段参数、元信息
字段参数 null 用于表示某个字段可以为空. unique 如果设置为unique=True 则该字段在此表中必须是唯一的 . db_index 如果db_index=True 则代表着为此字段设置 ...