el-dialog回显数据

654 阅读1分钟

dialog里第一次打开复选框回显不上的问题

问题描述

dialog里放了一个带有复选框表格,操作列点击编辑带上当前行的数据打开dialog将数据渲染到表格上,选中勾选的数据。但是第一次打开弹框回显不上,第二次打开才可以,新增打开弹框再打开编辑也可以回显(新增和编辑是同一个弹框)。

解决问题关键

Dialog 的内容是懒渲染的,即在第一次被打开之前,传入的默认 slot 不会被渲染到 DOM 上。因此,如果需要执行 DOM 操作,或通过 ref 获取相应组件,请在 open 事件回调中进行。-----意思是第一打开数据有了,但是dom节点还未加载好导致渲染不上。应该在dialog的open事件回调里嵌套一个setTimeOut渲染数据,有个坑要注意---在open回调里要判断这次打开弹框是编辑还是新增

代码

定义事件 <el-dialog :title="titleAblity" :visible.sync="applicateAblityVisible" width="80%" @open="openAbilityDialog()" >

//编辑回显数据
openAbilityDialog() {
  if(this.titleAblity == "编辑能力申请"){
    this.$nextTick(() => {
    //回显对外服务能力
    setTimeout(() => {
      this.systemData.forEach((row) => {
      const matchedIndex = this.editData.systemInfos.findIndex(
        (item) => item.systemName == row.systemName
      );
      this.$refs["systemTable"].toggleRowSelection(row, matchedIndex != -1);
    });
    }, 500);
  });
复制代码

this.systemData是table所有数据,this.editData.systemInfos是行带回来的要勾选的数据。

**注意**: 回显勾选复选框按照elementui官网的勾选方法会勾选不上,需要拿着table的数据和呀勾选的数据双层循环比对对得上的再用官网提供的toggleRowSelection方法