Elementui中toggleRowSelection失效

45 阅读1分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情

写在前边

页面中的表格中有些情况下是带复选框去进行勾选的,可以默认勾选也可以主动勾选,但是在默认勾选的时候,有些勾选是生效的。

失效原因

设置默认选中的行数据表格中的行数据不是同一个数据(字符是一样的,但是内存指针不一样),所以导致直接使用选中的行数据来设置可能会不生效

一般情况下我们默认的勾选方式是这样的:

if (state.id) {
  state.tableData.forEach(item => {
    if (item.dataStoreId == state.id) {
      multipleTable.value.toggleRowSelection(item, true);
    }
  })
}

解决方式:

通过循环选中的行数据(multipleSelection),然后从表格所有数据(tableData)中匹配 id 找到需要选中的项来帮助选中

代码如下:

state.tableData.forEach(item => {
  if (item.dataStoreId == state.id) {
    setTimeout(() => {
      multipleTable.value.toggleRowSelection(state.tableData.find(items => items.dataStoreId == state.id), true);
    }, 500)
  }
})

注意:``` find 方法匹配不到数据会返回undefined,导致报错