element ui分頁(yè)多選,翻頁(yè)記憶的實(shí)例
先說(shuō)需求:實(shí)時(shí)記錄當(dāng)前選中的分頁(yè)中的列表,分頁(yè)保存數(shù)據(jù),然后在用選中的數(shù)據(jù)進(jìn)行某些操作;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="商品名稱(chēng)"></el-table-column>
<el-table-column prop="barcode" label="商品編碼"></el-table-column>
<el-table-column prop="quantity" label="區(qū)域總庫(kù)存"></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ù)包含跨頁(yè)數(shù)據(jù)
multipleSelection:[],// 當(dāng)前頁(yè)選中的數(shù)據(jù)
idKey: 'barcode', // 標(biāo)識(shí)列表數(shù)據(jù)中每一行的唯一鍵的名稱(chēng)
page:{
//每頁(yè)數(shù)據(jù)量
pnum:10,
//數(shù)據(jù)總數(shù)
pageTotal:0,
//當(dāng)前頁(yè),從1開(kāi)始
currentPage:1,
}
}
},
methods: {
handleCurrentChange(){
this.changePageCoreRecordData();
if(!this.$isNull(this.page.pageTotal)) this.getGoodsList();
},
handleSelectionChange (val) {
this.multipleSelection = val;
//實(shí)時(shí)記錄選中的數(shù)據(jù)
setTimeout(()=>{
this.changePageCoreRecordData();
}, 50)
},
setSelectRow() {
if (!this.multipleSelectionAll || this.multipleSelectionAll.length <= 0) {
return;
}
// 標(biāo)識(shí)當(dāng)前行的唯一鍵的名稱(chē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)識(shí)當(dāng)前行的唯一鍵的名稱(chēng)
let idKey = this.idKey;
let that = this;
// 如果總記憶中還沒(méi)有選擇的數(shù)據(jù),那么就直接取當(dāng)前頁(yè)選中的數(shù)據(jù),不需要后面一系列計(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)前頁(yè)選中的id
this.multipleSelection.forEach(row=>{
selectIds.push(row[idKey]);
// 如果總選擇里面不包含當(dāng)前頁(yè)選中的數(shù)據(jù),那么就加入到總選擇集合里
if (selectAllIds.indexOf(row[idKey]) < 0) {
that.multipleSelectionAll.push(row);
}
})
let noSelectIds = [];
// 得到當(dāng)前頁(yè)沒(méi)有選中的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;
}
}
}
})
},
//請(qǐng)求接口部分
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()
}
}
代碼可直接粘貼到項(xiàng)目中使用,親測(cè)可用,傻瓜式代碼
以上這篇element ui分頁(yè)多選,翻頁(yè)記憶的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用404錯(cuò)誤頁(yè)面實(shí)現(xiàn)UrlRewrite的實(shí)現(xiàn)代碼
要求:網(wǎng)站編碼為utf-8,不適用于GB2312; 替換字符的正則可以自己增加和修改,以適合自己的網(wǎng)站;2008-08-08
微信小程序 Animation實(shí)現(xiàn)圖片旋轉(zhuǎn)動(dòng)畫(huà)示例
這篇文章主要介紹了微信小程序 Animation實(shí)現(xiàn)圖片旋轉(zhuǎn)動(dòng)畫(huà)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
javascript 閉包函數(shù)做顯隱內(nèi)容
用閉包函數(shù)做顯隱內(nèi)容,主要優(yōu)勢(shì)就是可以增加顯示與隱藏效率。2009-03-03
js實(shí)現(xiàn)的頁(yè)面矩陣圖形變換特效
這篇文章主要介紹了js實(shí)現(xiàn)的頁(yè)面矩陣圖形變換特效,涉及JavaScript利用數(shù)組與字符串的數(shù)學(xué)運(yùn)算操作頁(yè)面節(jié)點(diǎn)樣式變換的相關(guān)技巧,需要的朋友可以參考下2016-01-01
ES6模塊化的import和export用法方法總結(jié)
這篇文章主要介紹了ES6模塊化的import和export用法方法總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Javascript摸擬自由落體與上拋運(yùn)動(dòng)原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Javascript摸擬自由落體與上拋運(yùn)動(dòng),結(jié)合實(shí)例形式分析了Javascript摸擬自由落體與上拋運(yùn)動(dòng)相關(guān)原理、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-04-04

