公司中台项目刚开始开发,用了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 的翻页记忆选中的更多相关文章

  1. Vue+element ui table 导出到excel

    需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...

  2. element ui 表格提交时获取所有选中的checkbox的数据

    <el-table ref="multipleTable" :data="appList" @selection-change="changeF ...

  3. VUE -- 对 Element UI table中数据进行二次处理

    时间——日期 后台经常给我们返回的是 时间戳 (例如:1535620671) 这时候我们页面展现的时候需要将时间戳转换为我们要的格式 例如 (YYYY-MM-DD HH:mm:ss) 如果是在Elem ...

  4. Vue 基于node npm & vue-cli & element UI创建vue单页应用

    基于node npm & vue-cli & element UI创建vue单页应用 开发环境   Win 10   node-v10.15.3-x64.msi 下载地址: https ...

  5. Element UI table组件源码分析

    本文章从如下图所示的最基本的table入手,分析table组件源代码.本人已经对table组件原来的源码进行削减,源码点击这里下载.本文只对重要的代码片段进行讲解,推荐下载代码把项目运行起来,跟着文章 ...

  6. Element UI table参数中的selectable的使用

    Element UI table参数中的selectable的使用中遇到的坑:页面: <el-table-column :selectable='selectable' type="s ...

  7. Element ui 中使用table组件实现分页记忆选中

    我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...

  8. element UI table 过滤 筛选问题

    一.问提描述    使用elementUI table 官方筛选案例,发现筛选不是服务器端筛选,而是浏览器端对每一页进行单独筛选. 如何在服务器端筛选? 二.查询Element UI 官网table组 ...

  9. element ui table 导出excel表格

    https://blog.csdn.net/u010427666/article/details/79208145 vue2.0 + element UI 中 el-table 数据导出Excel1. ...

随机推荐

  1. 【Linux】vim缩进配置 (转载)

    1.安装vim,终端输入: wanpeng@ubuntu:~$ sudo apt-get install vim-full 2.终端输入,打开配置文件: wanpeng@ubuntu:~$ vim ~ ...

  2. 利用idea构建hibernate

    1.创建项目 若勾选Use library,则点击右侧的Create,使用本地已下载的Hibernate 5.2.13框架(必须导入hibernate-release-5.2.13.Final\lib ...

  3. html的select标签清空option!~~~~

    最好的方法:document.getElementById("selectId").length = 1; 也可以document.getElementById("sel ...

  4. MySQL5.7默认打开ONLY_FULL_GROUP_BY模式问题与解决方案

    MySQL5.7后将sql_mode的ONLY_FULL_GROUP_BY模式默认设置为打开状态,这样一来,很多之前的sql语句可能会出现错误,错误信息如下: Error Code: 1055. Ex ...

  5. javax.websocket.Session的一个close异常记录

    一刷新页面就报错如下: Connection closed 四月 10, 2018 11:20:18 上午 org.apache.tomcat.websocket.pojo.PojoEndpointB ...

  6. 洛谷P1507 NASA的食物计划

    //二维费用背包 #include<bits/stdc++.h> using namespace std; ; ; ; int v1[maxn],v2[maxn],w[maxn],n,v1 ...

  7. Datanodes-心跳机制

  8. Android 高仿微信(QQ)滑动弹出编辑、删除菜单效果,增加下拉刷新功能

    不可否认,微信.QQ列表的滑动删除.编辑功能着实很经典(从IOS那边模仿过来的),然.Android这边,对列表的操作,其实大多还停留上下文菜单来实现. Android如何实现list item的滑动 ...

  9. AtCoder Beginner Contest 078 D ABS

    光做C了,做完C,就要结束了,看了看D,没看懂那操作啥意思,就扔了. 刚才看了看,突然懂了.. 就是每个人从那堆牌上边拿牌,最少拿一张,最多可以全拿走,然后手里留下最后一张拿到的,其余的都扔掉. 比如 ...

  10. poj 3169 Layout (差分约束)

    3169 -- Layout 继续差分约束. 这题要判起点终点是否连通,并且要判负环,所以要用到spfa. 对于ML的边,要求两者之间距离要小于给定值,于是构建(a)->(b)=c的边.同理,对 ...