el-tableテーブルのページをめくっても、選択したものを覚えています.
5035 ワード
el-tableは多く選択して、現在のページの多選については分かりやすくユーザーに表示しますが、どのページを分けた後にどのページがどれだけ多く選択されたかを覚えておいて、正確にユーザーに表示するのはちょっと難しいです.具体的な実現:まず第一に、ここで運んできた人は、この人の文章の詳細スタンプから来ています.
Document
new Vue({
el: '#app',
data: {
checkData: [],
tableData: [],
total: 11,
},
methods: {
/**
*
* ,
*/
addDataItem(val, len) {
this.tableData = Array.from({length: len}, (v, i) => v = {
index: i,
id: `${val}${i}`,
});
if (this.checkData.length) {
this.toggleSelection(this.checkData);
}
},
handleCurrentChange(page) {
if (page === 1) {
this.addDataItem(1, 10);
} else {
this.addDataItem(2, 1);
}
},
/**
*
*/
handleSelect(selection, row) {
let allRows = selection.filter((item) => !!item);
if (allRows.find(item => item.id === row.id)) {
this.addRows([row]);
} else {
this.removeRows([row]);
}
},
/**
*
*/
handleSelectAll(selection) {
if (selection.length > 1) {
this.addRows(this.tableData);
} else {
this.removeRows(this.tableData);
}
},
addRows(rows) {
for (const key of rows) {
if (!this.checkData.find((item) => item.id === key.id)) {
this.checkData.push(key);
}
}
},
removeRows(rows) {
if (this.checkData.length > 0) {
for (const key of rows) {
this.checkData = this.checkData.filter((item) => item.id !== key.id);
}
}
},
toggleSelection(rows) {
if (rows) {
rows.forEach(row => {
this.$nextTick(() => {
const checked = this.tableData.find(tableRow => tableRow.id === row.id);
this.$refs.multipleTable.toggleRowSelection(checked, true);
});
});
} else {
this.$refs.multipleTable.toggleRowSelection(this.tableData, false);
this.removeRows(this.tableData);
}
}
},
created() {
this.addDataItem(1, 10);
},
});
二つ目は、element-ui公式文書を見てみると、もう実現する方法があります.とても簡単です.
Document
new Vue({
el: '#app',
data: {
checkData: [],
tableData: [],
total: 13,
currentPage: 1,
},
methods: {
/**
*
*/
addDataItem(val, len) {
this.tableData = Array.from({length: len}, (v, i) => v = {
index: i,
id: `${val}${i}`,
});
},
handleCurrentChange(page) {
this.currentPage = page;
if (page === 1) {
this.addDataItem(1, 10);
} else {
this.addDataItem(2, 3);
}
},
handleSelectionChange(val) {
this.checkData = val;
},
getRowKeys(row) {
return row.id;
},
},
created() {
this.addDataItem(1, 10);
},
});