- 實現多選非常簡單: 手動添加一個
el-table-column
,設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]])">切換第二、第三行的選中狀態</el-button> <el-button @click="toggleSelection()">取消選擇</el-button> </div> </template>
ref 綁定數據對象data中的數據 multipleTable用於儲存選中的選項:
<script> export default { data() { return { tableData: [{ date: '2016-05-03', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-02', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-01', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-08', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-06', name: '王小虎', address: '上海市普陀區金沙江路 1518 弄' }, { date: '2016-05-07', name: '王小虎', address: '上海市普陀區金沙江路 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>
項目中如果只能選擇一個數據進行操作:
@selection-change事件 :選項發生變化時觸發
<el-table @selection-change="handleSelectionChange" ref="multipleTable" :key="tableKey" :data="tableData" row-key="id" v-loading="tableLoading" element-loading-text="給我一點時間" fit size="mini" tooltip-effect="dark" style="width: 100%;font-size: 12px;margin-bottom:15px;border-radius:3px;" :header-cell-style="tableHeaderColor" >
methods:方法
handleSelectionChange(val) { // 返回值val是選中行數據的集合 this.multipleSelection = val.map(item => item.id); this.isProcurementStatus = val.map(item => item.procurementStatus); this.forDialogTitle = val.map(item => item.purchaseProject); },
通過判斷 multipleSelection長度確定選中的個數