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;
};
35

被折叠的 条评论
为什么被折叠?



