关于Element-ui中table默认选中toggleRowSelection问题

 更新时间:2022年08月09日 14:57:27   作者:面条请不要欺负汉堡  
这篇文章主要介绍了关于Element-ui中table默认选中toggleRowSelection问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Element-ui中table默认选中toggleRowSelection

一.toggleRowSelection

toggleRowSelection(row, selected)接受两个参数,row传递被勾选行的数据,selected设置是否选中

注意:调用toggleRowSelection这个方法 需要获取真实dom 所以需要注册 ref 来引用它 

二.操作

(一).默认选中

1.当数据源固定在table的

<script>
export default {   
	mounted() {
    	this.$refs.multipleTable.toggleRowSelection(this.tableData3[2],true);
	}
}
</script>
 

(二).点击tr选中

1.在table中设置 @row-click="handleCurrentChange"

row-click  点击行事件

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange">
	</el-table>
</template>
<script>
export default {   
	methods: {
		handleCurrentChange(row, event, column){
			this.$refs.multipleTable.toggleRowSelection(row,true);//点击选中
		}
    }
}
</script>

(三).获取选中的值

1.设置table 中@selection-change="selsChange"

2.data 中设置sels:[]

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange" @selection-change="selsChange">
	</el-table>
</template>
<script>
export default {   
	methods: {
		selsChange( val){
			this.sels=val;
			console.log(this.sels)
		}
    }
}
</script>

三.案例

1.table tr 点击 复选框选中  再次点击 复选框取消选中

①设置一个全局函数

exports.install = function (Vue, options) {
    //删除数组 指定的元素
    Vue.prototype.removeByValue=function(arr, val){
        for(var i=0; i<arr.length; i++) {
            if(arr[i] == val) {
                arr.splice(i, 1);
                break;
            }
        }
    };
};

②table.vue

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange" @selection-change="selsChange">
		<el-table-column type="selection" width="55" ></el-table-column>
		<el-table-column type="index" label="序号" width="60"></el-table-column>
		<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex"></el-table-column>
		<el-table-column prop="date" label="日期"></el-table-column>
		<el-table-column prop="name" label="姓名"></el-table-column>
		<el-table-column prop="address" label="地址"></el-table-column>
	</el-table>
</template>
<script>
export default {   
	data() {
		return {
	        tableData3: [{
	        	id:'1',
				date: '2016-05-03',
				name: '嘎哈和',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'1'
	        }, {
	        	id:'2',
				date: '2016-05-02',
				name: '王小虎',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'0'
	        }, {
	        	id:'3',
				date: '2016-05-02',
				name: '莫默模',
				address: '上海市普陀区金沙江路 1518 弄',
				sex:'-1'
	        }],
	        arrID:[],
 
	    }
	},
	methods: {
		formatSex: function (row, column, cellValue, index) {
			return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
		},
		// 点击事情
        handleCurrentChange(row, event, column){  
        	var same=false;
            if(this.arrID.length > 0){
				for(var i=0; i<this.arrID.length ;i++){
					if(this.arrID[i]==row.id){
						same=true;
						this.removeByValue(this.arrID, row.id);
						break;
					}
				}
				if(same==true){
	            	this.$refs.multipleTable.toggleRowSelection(row,false);
	            }else{
	            	this.$refs.multipleTable.toggleRowSelection(row,true);
	            	this.arrID.push(row.id);
	            }
            }else{
            	this.$refs.multipleTable.toggleRowSelection(row,true);
        		this.arrID.push(row.id);
            }
        },
        selsChange(val){
        	var valId=[];
        	for(var i=0;i<val.length;i++){
        		var arrIDsame=false;
        		valId.push(val[i].id);
        	}
        	this.arrID=valId;
        }
    },
    mounted() {  
        this.$refs.multipleTable.toggleRowSelection(this.tableData3[2],true);//默认选中  
    }
}
</script>
<style>
</style>

Element-ui踩坑之表格选中toggleRowSelection问题

今天遇到一个表格选择默认的问题,表格当前页没有值,但是默认还是选中的,这个时候想要删除表格选择:

this.$nextTick(()=>{
   this.$refs.multipleTable.selection.forEach((select,index)=>{
      if(select.id === this.selectedTableData[data].id){
           this.$refs.multipleTable.toggleRowSelection(select,false);
      }
   })
})
  • 要点1,加this.$nextTick(()=>{});
  • 要点2,选择的值要从table的selection中取,应该key的变化问题。

由于篇幅较短,再加一点之前踩的坑记录:

仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)

:row-key="getRowKeys"
//多选时需要
getRowKeys(row) {
  return row.id;
},

这种翻页之类的多选就会保留数据。

再说一个想要清空表格的所有选择:

this.$refs.multipleTable.clearSelection()

还有全选表格行:

this.$refs.multipleTable.toggleAllSelection()

后面遇到再做补充…… 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Vue WatchEffect函数创建高级侦听器

    Vue WatchEffect函数创建高级侦听器

    watchEffect传入的函数会被立即执行一次,并且在执行的过程中会收集依赖;其次,只有收集的依赖发生变化时,watchEffect传入的函数才会再次执行
    2023-03-03
  • 使用Vue创建前后端分离项目的完整过程(前端部分)

    使用Vue创建前后端分离项目的完整过程(前端部分)

    这篇文章主要介绍了使用Vue.js和Node.js搭建一个前端和后端分离的项目,并使用VueCLI3脚手架、axios进行HTTP请求、Vue-router实现前端路由和vuex进行状态管理,需要的朋友可以参考下
    2025-01-01
  • 简单谈谈Vue中的diff算法

    简单谈谈Vue中的diff算法

    diff算法的本质是找出两个对象之间的差异,目的是尽可能复用节点。,下面这篇文章主要给大家介绍了关于Vue中diff算法的相关资料,需要的朋友可以参考下
    2021-09-09
  • VUE兄弟组件传值操作实例分析

    VUE兄弟组件传值操作实例分析

    这篇文章主要介绍了VUE兄弟组件传值操作,结合实例形式分析了VUE兄弟组件传值操作的原理、步骤、实现方法及相关注意事项,需要的朋友可以参考下
    2019-10-10
  • vue+echarts实现条纹柱状横向图

    vue+echarts实现条纹柱状横向图

    这篇文章主要为大家详细介绍了vue+echarts实现条纹柱状横向图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 简单设置el-date-picker的默认当前时间问题

    简单设置el-date-picker的默认当前时间问题

    这篇文章主要介绍了简单设置el-date-picker的默认当前时间问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue实现设置载入动画和初始化页面动画效果

    vue实现设置载入动画和初始化页面动画效果

    今天小编就为大家分享一篇vue实现设置载入动画和初始化页面动画效果,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 前端开发指南之vue-grid-layout的使用实例

    前端开发指南之vue-grid-layout的使用实例

    vue-grid-layout是一个vue栅格拖动布局的组件,下面这篇文章主要给大家介绍了关于前端开发指南之vue-grid-layout使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • vue项目使用websocket连接问题及解决

    vue项目使用websocket连接问题及解决

    这篇文章主要介绍了vue项目使用websocket连接问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • vue-better-scroll 的使用实例代码详解

    vue-better-scroll 的使用实例代码详解

    这篇文章主要介绍了vue-better-scroll 的使用实例代码详解,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12

最新评论