表格数据回填,二次点击编辑按钮报错

bug事件展示:

表格该行数据返回打印如下:

代码逻辑:

//表格HTML 
<el-table-column label="操作">
    <template #default="scope">
       <el-button link type="primary" @click.prevent="edit(scope.row)">
           编辑
       </el-button>
    </template>
 </el-table-column>


//弹窗下拉框
<el-form-item label="功能权限:" style="margin-left: 8%">
  <el-select
     v-model="form_edit.functionPermissions"
     @focus="getPermData"
     multiple
     placeholder="请选择权限">
   <el-option
      v-for="item in functionPermissionsData_edit"
      :key="item.id"
      :label="item.name"
      :value="item.id"/>
  </el-select>
</el-form-item>


// 修改按钮
const edit = (row) => {
  console.log("row", row);
  getPermData();//功能权限的接口
  form_edit.value=row
  form_edit.value.functionPermissions = row.functionPermissions.map(
   (element) => {
      return element.id;
  }
  );//根据row打印的数据会发现后端传递的functionPermissions是一个数组的形式,然而我们需要获取 
      id赋值给 v-model="form_edit.functionPermissions";然后掉接口,这样组件会自动根据id去匹 
      配name回填上,如果咱们直接使用row.functionPermissions的name去回填的话,在后面保存数据时 
      候,与后端要求传递的id数组相悖。
  dialogFormVisible.value = true;
};

错误情况:多次点击编辑让弹窗显示后就会报错,也数据回填错误,row打印的数据为undefined

错误原因:因为小编懒惰,想让获取到的数据自动回填给form_edit表单(前后数据字段已对应好),然后需要处理的数据再手动处理。这样导致了大bug,且不易发现原因!!!!!

改正:删去form_edit.value=row,每一个数据都手动对应。

  ps:当你们的数据不需要map遍历数组的时候就不需要删掉form_edit.value=row辣,可以按照小编这种偷懒办法

const edit = (row) => {
  console.log("row", row);
  getPermData();
  getStateInfo();
  form_edit.value.nickName = row.nickName;
  form_edit.value.userName = row.userName;
  form_edit.value.points = row.points;
  form_edit.value.userId = row.userId;
  form_edit.value.desc = row.desc;
  form_edit.value.functionPermissions = row.functionPermissions.map(
    (element) => {
      return element.id;
    }
  );
  form_edit.value.permissionId = row.permission === "管理员" ? 1 : 10 || "";
  form_edit.value.inside = row.isInsider === 1 ? "1" : "0" || "";
  form_edit.value.state = row.state === "正常" ? 0 : 1;
  number.value = "";
  dialogFormVisible.value = true;
  numberShow.value = false;
};

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值