vue中table多選/單選行,獲取其數(shù)據(jù)方式
vue table多選/單選行,獲取其數(shù)據(jù)
多選
使用官方文檔提供的方式:手動(dòng)添加一個(gè)el-table-column,設(shè)type屬性為selection即可。
<template> ? <el-table ? ? ref="multipleTable" ? ? :data="tableData" ? ? tooltip-effect="dark" ? ? style="width: 100%" ? ? @selection-change="handleSelectionChange"> ? ? <el-table-column ? ? ? type="selection" ? ? ? width="55"> ? ? </el-table-column> ? ? <el-table-column ? ? ? label="日期" ? ? ? width="120"> ? ? ? <template slot-scope="scope">{{ scope.row.date }}</template> ? ? </el-table-column> ? ? <el-table-column ? ? ? prop="name" ? ? ? label="姓名" ? ? ? width="120"> ? ? </el-table-column> ? ? <el-table-column ? ? ? prop="address" ? ? ? label="地址" ? ? ? show-overflow-tooltip> ? ? </el-table-column> ? </el-table> ? <div style="margin-top: 20px"> ? ? <el-button @click="toggleSelection([tableData[1], tableData[2]])">切換第二、第三行的選中狀態(tài)</el-button> ? ? <el-button @click="toggleSelection()">取消選擇</el-button> ? </div> </template>
<script> ? export default { ? ? data() { ? ? ? return { ? ? ? ? tableData: [{ ? ? ? ? ? date: '2016-05-03', ? ? ? ? ? name: '王小虎', ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1518 弄' ? ? ? ? }, { ? ? ? ? ? date: '2016-05-02', ? ? ? ? ? name: '王小虎', ? ? ? ? ? address: '上海市普陀區(qū)金沙江路 1518 弄' ? ? ? ? }], ? ? ? ? multipleSelection: [] ? ? ? } ? ? }, ? ? methods: { ? ? ? toggleSelection(rows) { ? ? ? ? if (rows) { ? ? ? ? ? rows.forEach(row => { ? ? ? ? ? ? this.$refs.multipleTable.toggleRowSelection(row); ? ? ? ? ? }); ? ? ? ? } else { ? ? ? ? ? this.$refs.multipleTable.clearSelection(); ? ? ? ? } ? ? ? }, ? ? ? handleSelectionChange(val) { ? ? ? ? this.multipleSelection = val; ? ? ? } ? ? } ? } </script>
單選
在多選的基礎(chǔ)上修改,樣式不變,將handleSelectionChange方法修改為:
handleSelectionChange(val) { ? ? ? this.multipleSelection = val ? ? ? if (val.length > 1) { ? ? ? ? this.$refs.multipleTableFrag.clearSelection() ? ? ? ? this.$refs.multipleTableFrag.toggleRowSelection(val.pop()) ? ? ? } ? ? ? console.log(val[0]['name']) ? ? },
用數(shù)組存儲(chǔ)所選行,每次數(shù)組長(zhǎng)度大于1時(shí),會(huì)pop之前的行,保證數(shù)組中最多存在一個(gè)行的數(shù)據(jù)。獲取該行某個(gè)屬性的數(shù)據(jù),用val[0]['屬性名']。
注意:
this.$refs.multipleTableFrag.clearSelection()為通過table的屬性ref值,找到相應(yīng)的table,執(zhí)行后面的clearSelection()方法。
若多個(gè)表,記得ref要寫的不一樣。
el-table 多選 單選功能
常見的el-table多選刪除功能
<el-table :data="tableData" @selection-change="handleSelectionChange">
js: 將選擇的id保存在一個(gè)數(shù)組里面,可以使用forEach或者map(map可以直接返回一個(gè)數(shù)組,較為方便)
?// 表格復(fù)選框 數(shù)據(jù) ? ? ? ? handleSelectionChange(val) { ? ? ? ? ? ? this.changArr = [] ? ? ? ? ? ? val.forEach((item) => { ? ? ? ? ? ? ? ? this.changArr.push(item.idBq) ? ? ? ? ? ? }) ? ? ? ? },
然后就是刪除操作:
?// 批量刪除 ? ? ? ? deleteDatafile() { ? ? ? ? ? ? if (this.changArr.length > 0) { ? ? ? ? ? ? ? ? this.$confirm('此操作將永久批量刪除該文件, 是否繼續(xù)?', '提示', { ? ? ? ? ? ? ? ? ? ? confirmButtonText: '確定', ? ? ? ? ? ? ? ? ? ? cancelButtonText: '取消', ? ? ? ? ? ? ? ? ? ? type: 'warning', ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? .then(() => { ? ? ? ? ? ? ? ? ? ? ? ? removeTag({ ? ? ? ? ? ? ? ? ? ? ? ? ? ? idbqs: this.changArr, ? ? ? ? ? ? ? ? ? ? ? ? }).then((res) => { ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (res && res.data.data) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.$message.success('刪除成功') ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? this.queryData() ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? .catch(() => { ? ? ? ? ? ? ? ? ? ? ? ? this.$message({ ? ? ? ? ? ? ? ? ? ? ? ? ? ? type: 'info', ? ? ? ? ? ? ? ? ? ? ? ? ? ? message: '已取消刪除', ? ? ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? ? ? ? ? }) ? ? ? ? ? ? } ? ? ? ? },
單選刪除
直接使用 @select="select",在這個(gè)方法里面將數(shù)據(jù)前面的復(fù)選框回顯上
?<el-table :data="tableData" @select="select">
js部分:
// 單選 ? ? ? ? select(selection, row) { ? ? ? ? ? ? if (selection.length > 1) { ? ? ? ? ? ? ? ? let del_row = selection.shift() ? ? ? ? ? ? ? ? this.$refs.table.toggleRowSelection(del_row, false) ? ? ? ? ? ? } ? ? ? ? ? ? this.xmdmArr = [] ? ? ? ? ? ? this.chooseList = [] ? ? ? ? ? ? this.xmdmArr.push(row.xmdm) ? ? ? ? ? ? this.chooseList = row.bqszdx.map((item) => { ? ? ? ? ? ? ? ? return item.idBq ? ? ? ? ? ? }) ? ? ? ? },
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue中使用el-table組件checkbox進(jìn)行分頁(yè)多選,回顯、切換分頁(yè)記住上一頁(yè)所勾選和取消的選項(xiàng)(示例代碼)
這篇文章主要介紹了vue中使用el-table組件checkbox進(jìn)行分頁(yè)多選,回顯、切換分頁(yè)記住上一頁(yè)所勾選和取消的選項(xiàng)本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12在Vue項(xiàng)目中使用snapshot測(cè)試的具體使用
這篇文章主要介紹了在Vue項(xiàng)目中使用snapshot測(cè)試的具體使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04簡(jiǎn)化版的vue-router實(shí)現(xiàn)思路詳解
這篇文章主要介紹了簡(jiǎn)化版的vue-router,需要的朋友可以參考下2018-10-10vue3+ts如何通過lodash實(shí)現(xiàn)防抖節(jié)流詳解
loadsh是一個(gè)工具庫(kù),我們通常使用loadsh的debounce函數(shù)處理防抖,下面這篇文章主要給大家介紹了關(guān)于vue3+ts如何通過lodash實(shí)現(xiàn)防抖節(jié)流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08詳解在vue-cli3.0中自定css、js和圖片的打包路徑
這篇文章主要介紹了詳解在vue-cli3.0中自定css、js和圖片的打包路徑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08