#独家
vue3+ts+element-plus的表格的默认勾选复选框以后,刷新页面,会调用selection-change事件?

2023-04-27 0 1,315

![image.png](/img/bVc6L这个是写的html

// 获取每一行的key
const rowKey = (row:any) => {
  return row.id;
};
// 勾选复选框事件
const handleSelectionChange = (selection: User) => {
  let currentRow;
    if (selection.length > multipleSelection.value.length) {
      // 勾选了复选框
      currentRow = selection.slice(-1)[0]; // 获取最后一个元素
    } else {
      // 取消了复选框
      currentRow = multipleSelection.value.find(
        (row:any) => !selection.includes(row)
      ); // 获取不在 selection 中的元素
    }
    multipleSelection.value = selection
    SelectionChange(currentRow)
}
const SelectionChange = (row:any) => {
    SigCategoryUpdate({
      id: row?.id,
      category: row?.category,
      enable: !row?.enable
    }).then(res => {
      if(res.code === 200) {
        tableData.value.forEach((item:any) => {
          if(item.id === row.id){
            item.enable = !row.enable
          }
        })
        nextTick(() => toggleSelection(tableData.value))
      }
    })
}

这个是进入页面的时候获取到数据,添加默认的勾选框

const getRuleManageData = () => {
  RuleManage({
    engine: 'engine-1'
  }).then(res => {
    if(res.code === 200) {
      listLoading.value = false
      tableData.value = res.data.sig_category
      nextTick(() => toggleSelection(res.data.sig_category))
    }
  })
}
const toggleSelection = (rows: any) => {
  if(rows) {
    rows.forEach((row: any) => {
      if(row.enable) {
        multipleTableRef.value!.toggleRowSelection(row,row.enable)
      }
    })
  }else {
    multipleTableRef.value!.clearSelection()
  }
}

我在改变了勾选框状态以后,刷新页面他会自动执行handleSelectionChange事件里面的SelectionChange事件,导致选中的也会变为没选中,如何解决有没有什么方法,麻烦给我指正一下

你先修改 toggleSelection:

const toggleSelection = (rows: any, isInitialLoad: boolean) => {
  if(rows) {
    rows.forEach((row: any) => {
      if(row.enable) {
        multipleTableRef.value!.toggleRowSelection(row, row.enable, isInitialLoad);
      }
    })
  }else {
    multipleTableRef.value!.clearSelection()
  }
}

然后,在 getRuleManageData 中调用 toggleSelection 时候,传true 作为 isInitialLoad 参数:

const getRuleManageData = () => {
  RuleManage({
    engine: 'engine-1'
  }).then(res => {
    if(res.code === 200) {
      listLoading.value = false
      tableData.value = res.data.sig_category
      nextTick(() => toggleSelection(res.data.sig_category, true))
    }
  })
}
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 vue3+ts+element-plus的表格的默认勾选复选框以后,刷新页面,会调用selection-change事件? https://www.jkxiazai.com/1659.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务