el-table默认选中项
核心伪代码如下:
this.$refs.multipleTable.toggleRowSelection(this.tableData[index],true); //row 选中
外面套两层for循环,if判断想要选中的某项值和tableData中某对象的某个值相等即可
for(var i=0; i<GuidList.length; i++){
for (let index = 0; index < this.tableData.length; index++) {
if (GuidList[i] == this.tableData[index].staffId) { //服务端返回需选中项的id
this.$refs.multipleTable.toggleRowSelection(this.tableData[index], true); //row.ndex 选中
}
}
}
当然前提是必须要现生成table列表,然后获取到修改项,包括选中项,重要的一点是必须把拿到的数据赋值给data中双向绑定的数据:
问题来了,我设置好之后,数据时拿到了,设置也设置了,但是view视图时而能更新,时而不能更新,仔细排查了一遍,原因是因为dialog弹出来了但是其中的table还未被实例化,不能被操作,只需要将数据延迟一下渲染ok了,如下:
var setData = () => {
for(var i=0; i<GuidList.length; i++){
for (let index = 0; index < this.tableData.length; index++) {
if (GuidList[i] == this.tableData[index].staffId) {
this.$refs.multipleTable.toggleRowSelection(this.tableData[index], true); //row 选中
}
}
}
this.FormData = { } //更改data中的数据
}
if (!this.$refs.multipleTable) {
setTimeout(() => {
setData()
}, 200)
} else {
setData()
}
okay,当然被忘了给table添加ref的属性。
提交完毕清空选中项:
this.$refs.multipleTable.clearSelection(); //操作完成清除勾选项