用el-table创建表格,绑定data中数据
<el-table ref="multipleTable" :data="tableData" tooltip-effect="dark" stripe class="man-table" style="width: 100%" @selection-change="handleDetailSelectionChange" >data中:
data() { return { //选择框 checkedDetail:[], // 表格数据 tableData: [ { id: "01", Type: "类型一", Time: "17:23", Info: "越界", Location: "lng: 161.32 , lat: 39.34", Workers: "王五", State: "处理中" }, { id: "02", Type: "类型二", Time: "17:26", Info: "越界", Location: "lng: 161.34 , lat: 39.44", Workers: "李四", State: "处理完成" } ], }@selection-change为勾选框改变事件,在选择勾选框时触发。
//单选框选中数据 handleDetailSelectionChange(selection) { //如果缓存中已有数据,则清空 if (selection.length > 1) { this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.toggleRowSelection(selection.pop()); } else { //将选中行存入缓存中 this.checkedDetail = selection; } },section本来是多选时选中项的数组,通过 this.$refs.multipleTable获取到这个el-table,提前需要给这个el-table设置
ref=“multipleTable”
需要提前声明checkedDetail
//选择框 checkedDetail:[]
methods中:
handleAddDetails() { //如果数据为空,则重置 if (this.tableData == undefined) { this.tableData = new Array(); } let obj = {}; obj.id:"03", obj.Type: "类型四", obj.Time "13:54", obj.Info: "越界", obj.Location: "lng: 161.32 , lat: 39.34", obj.Workers: "秦六", obj.State: "处理中" //push进this.tableData中 this.tableData.push(obj); },methods中:
// 删除单个行 handleDelete(index) { //console.log(this.tableData[index]); if (this.checkedDetail.length == 0) { this.$alert("请先选择要删除的数据", "提示", { confirmButtonText: "确定", }); } else { this.tableData.splice(index, 1); } },勾选后,勾选的内容存储到了checkedDetail中 所以在删除前判断是否选中了一行就可以通过判断其长度即可。
然后,首先判断是否选择了行,如果未选择行,则会给出提示,随后将此条数据在数据源中去掉即可实现删除一行。
splice方法是表示从第一个索引参数开始,删除第二个参数个元素。
methods中:
//清空List Clear(){ this.tableData=undefined; }清空List很简单,将tableData设为undefined即可