element ui分頁多選,翻頁記憶的實例
先說需求:實時記錄當(dāng)前選中的分頁中的列表,分頁保存數(shù)據(jù),然后在用選中的數(shù)據(jù)進行某些操作;PS:左下角的數(shù)字為記錄的當(dāng)前選中的列表的和

直接上可用的代碼,前提已配置好各種環(huán)境
HTML部分
<!--table組件需要使用ref="table"-->
<template>
<div>
<el-table :data="tableData" ref="table" stripe style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column prop="name" label="商品名稱"></el-table-column>
<el-table-column prop="barcode" label="商品編碼"></el-table-column>
<el-table-column prop="quantity" label="區(qū)域總庫存"></el-table-column>
</el-table>
<div class="block" v-show="page.pageTotal>10">
<el-pagination @current-change="handleCurrentChange" :current-page.sync="page.currentPage" :page-size="page.pnum" layout="total, prev, pager, next , jumper" :total="page.pageTotal">
</el-pagination>
</div>
<div>
{{multipleSelectionAll.length}}
</div>
</div>
</template>
JS部分
export default {
data(){
return {
tableData: [], // 表格數(shù)據(jù)
multipleSelectionAll:[],//所有選中的數(shù)據(jù)包含跨頁數(shù)據(jù)
multipleSelection:[],// 當(dāng)前頁選中的數(shù)據(jù)
idKey: 'barcode', // 標(biāo)識列表數(shù)據(jù)中每一行的唯一鍵的名稱
page:{
//每頁數(shù)據(jù)量
pnum:10,
//數(shù)據(jù)總數(shù)
pageTotal:0,
//當(dāng)前頁,從1開始
currentPage:1,
}
}
},
methods: {
handleCurrentChange(){
this.changePageCoreRecordData();
if(!this.$isNull(this.page.pageTotal)) this.getGoodsList();
},
handleSelectionChange (val) {
this.multipleSelection = val;
//實時記錄選中的數(shù)據(jù)
setTimeout(()=>{
this.changePageCoreRecordData();
}, 50)
},
setSelectRow() {
if (!this.multipleSelectionAll || this.multipleSelectionAll.length <= 0) {
return;
}
// 標(biāo)識當(dāng)前行的唯一鍵的名稱
let idKey = this.idKey;
let selectAllIds = [];
let that = this;
this.multipleSelectionAll.forEach(row=>{
selectAllIds.push(row[idKey]);
})
this.$refs.table.clearSelection();
for(var i = 0; i < this.tableData.length; i++) {
if (selectAllIds.indexOf(this.tableData[i][idKey]) >= 0) {
// 設(shè)置選中,記住table組件需要使用ref="table"
this.$refs.table.toggleRowSelection(this.tableData[i], true);
}
}
},
// 記憶選擇核心方法
changePageCoreRecordData () {
// 標(biāo)識當(dāng)前行的唯一鍵的名稱
let idKey = this.idKey;
let that = this;
// 如果總記憶中還沒有選擇的數(shù)據(jù),那么就直接取當(dāng)前頁選中的數(shù)據(jù),不需要后面一系列計算
if (this.multipleSelectionAll.length <= 0) {
this.multipleSelectionAll = this.multipleSelection;
return;
}
// 總選擇里面的key集合
let selectAllIds = [];
this.multipleSelectionAll.forEach(row=>{
selectAllIds.push(row[idKey]);
})
let selectIds = []
// 獲取當(dāng)前頁選中的id
this.multipleSelection.forEach(row=>{
selectIds.push(row[idKey]);
// 如果總選擇里面不包含當(dāng)前頁選中的數(shù)據(jù),那么就加入到總選擇集合里
if (selectAllIds.indexOf(row[idKey]) < 0) {
that.multipleSelectionAll.push(row);
}
})
let noSelectIds = [];
// 得到當(dāng)前頁沒有選中的id
this.tableData.forEach(row=>{
if (selectIds.indexOf(row[idKey]) < 0) {
noSelectIds.push(row[idKey]);
}
})
noSelectIds.forEach(id=>{
if (selectAllIds.indexOf(id) >= 0) {
for(let i = 0; i< that.multipleSelectionAll.length; i ++) {
if (that.multipleSelectionAll[i][idKey] == id) {
// 如果總選擇中有未被選中的,那么就刪除這條
that.multipleSelectionAll.splice(i, 1);
break;
}
}
}
})
},
//請求接口部分
getGoodsList(){
let data = {};
data['page'] = this.page.currentPage;
data['pnum'] = this.page.pnum;
this.$ajax({
url:'goods/list',
data:data
}).then(val => {
this.tableData = val.data.rows ? val.data.rows : [];
this.page = {
pnum:10,
pageTotal:val.data.total,
currentPage:val.data.page,
};
setTimeout(()=>{
this.setSelectRow();
}, 50)
})
}
},
created () {
this.getGoodsList()
}
}
代碼可直接粘貼到項目中使用,親測可用,傻瓜式代碼
以上這篇element ui分頁多選,翻頁記憶的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用404錯誤頁面實現(xiàn)UrlRewrite的實現(xiàn)代碼
要求:網(wǎng)站編碼為utf-8,不適用于GB2312; 替換字符的正則可以自己增加和修改,以適合自己的網(wǎng)站;2008-08-08
微信小程序 Animation實現(xiàn)圖片旋轉(zhuǎn)動畫示例
這篇文章主要介紹了微信小程序 Animation實現(xiàn)圖片旋轉(zhuǎn)動畫示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
javascript 閉包函數(shù)做顯隱內(nèi)容
用閉包函數(shù)做顯隱內(nèi)容,主要優(yōu)勢就是可以增加顯示與隱藏效率。2009-03-03
ES6模塊化的import和export用法方法總結(jié)
這篇文章主要介紹了ES6模塊化的import和export用法方法總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08
Javascript摸擬自由落體與上拋運動原理與實現(xiàn)方法詳解
這篇文章主要介紹了Javascript摸擬自由落體與上拋運動,結(jié)合實例形式分析了Javascript摸擬自由落體與上拋運動相關(guān)原理、實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下2020-04-04

