天天看點

el-table實作多選及反選el-table實作多選及反選

el-table實作多選及反選

<template>
	<div>
		<div>
			<el-button type="primary" size="small" @click="reverseElectionClick()">反選</el-button>
		</div>
		<el-table ref="multipleTable" @selection-change="handleSelectionChange" tooltip-effect="dark" :data="tableData" style="width: 100%" height="650">
          <el-table-column type="selection" width="55"></el-table-column>
          <el-table-column prop="startTime" label="開始時間"></el-table-column>
          <el-table-column prop="endTime" label="結束時間"></el-table-column>
          <el-table-column prop="" label="操作">
            <template slot-scope="scope">
              <el-button type="danger" size="small" @click="delClick(scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
	</div>
</template>

<script>
	export default{
		data(){
			return{
				tableData: [], // 表格資料
				multipleSelection: [], // 選擇後的資料
			}
		},
		methods:{
			/**
			* el-table點選選擇操作
			*/
			handleSelectionChange(val){
				this.multipleSelection = val;
			},
			
			/**
			* 反選
			*/
			reverseElectionClick(){
				this.tableData.forEach(item=>{
					let flg = false;
					this.multipleSelection.forEach(el=>{
						// 判斷在選擇的資料中是否存在tableData裡的資料,如果存在,證明已經是選中狀态,讓其取消選擇
						if (item.id == el.id){
							flg = true;
						}
					});
					// 取反, 如果flg為true,讓目前行(item)取消選擇,flg為false,讓目前行(item)選中
					if (flg){
						this.$refs.multipleTable.toggleRowSelection(item,false);
					} else {
						this.$refs.multipleTable.toggleRowSelection(item,true);
					}
				})
			},
		}
	}
</script>
           

繼續閱讀