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. ...
随机推荐
- postman post 数据格式
postman post 数据的时候,选择raw的tab ,选择json. 然后在下面的提交json数据, {"photoPath":"bbbbbbbbbbbbbb&qu ...
- @NOIP2018 - D2T1@ 旅行
目录 @题目描述@ @题解@ @代码@ @题目描述@ 小 Y 是一个爱好旅行的 OIer.她来到 X 国,打算将各个城市都玩一遍. 小Y了解到, X国的 n 个城市之间有 m 条双向道路.每条双向道路 ...
- jQuery 无刷新评论
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- phpexecl
<?phpnamespace Admin\Controller;use Think\Controller;class InoutController extends Controller { p ...
- Data Flow-File Read-基本过程
- 数(aqnum)
数(aqnum) 3.1 题目描述 秋锅对数论很感兴趣,他特别喜欢一种数字.秋锅把这种数字命名为 农数 ,英文名为 AQ number . 这种数字定义如下: 定义 1 一个数 n 是农数,当且仅当对 ...
- centos6 名字服务dnsmasq配置
1 主机名配置 主机hd1配置(后面配置为名字服务器) [grid_hd@hd1 Desktop]$ cat /etc/sysconfig/network NETWORKING=yes HOSTNAM ...
- poj 1271 && uva 10117 Nice Milk (半平面交)
uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem= ...
- img的alt和title的异同?
alt 是图片加载失败时,显示在网页上的替代文字: title 是鼠标放上面时显示的文字,title是对图片的描述与进一步说明; 这些都是表面上的区别,alt是img必要的属性,而title不是. 对 ...
- functiils.lru_cache缩短递归时间
力扣上看到一道题: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 使用普通递归解决,超出时间限 ...