Element-UI 级联选择器动态回显数据
背景
解决级联选择器动态获取数据后选中数据时的回显bug
组件使用
<el-cascader
style="width: 300px"
:props="cascaderPros"
ref="cascaderModel"
@change="cascaderChange"
v-if="isShowCascader"
></el-cascader>
定义动态方法
lazyLoad(node, resolve) {
// console.log("node", node);
setTimeout(() => {
if (node.level == 0) {
departList({}).then((res) => {
let data = [];
if (res.code == 1) {
data = res.data.list.map((value, i) => {
return {
value: value.id,
label: value.name,
};
});
resolve(data);
} else {
self.$message.error("获取一级部门数据异常");
}
});
} else if (node.level == 1) {
let params = {
department_id: node.data.value,
};
deplistSecondList(params).then((res) => {
// console.log("二级部门列表", res);
let child = [];
if (res.code == 1) {
node.data.children = [];
child = res.data.list.map((value, i) => {
return {
value: value.id,
label: value.name,
leaf: true,
};
});
if (child.length == 0) {
self.$message("该部门下没有二级部门");
self.$refs.cascaderModel.$refs.panel.activePath = [];
self.$refs.cascaderModel.$refs.panel.syncActivePath();
}
resolve(child);
} else {
self.$message.error("获取二级部门数据异常");
}
});
} else if (node.level == 2) {
resolve([]);
}
}, 500);
},
解决方式
弹框返回时需要执行下面三行,否则再次打开还会出现上次的选择
this.$refs.cascaderModel.$refs.panel.checkedValue = []; //也可以是指定的值,默认返回值是数组,也可以返回单个值
this.$refs.cascaderModel.$refs.panel.activePath = [];
this.$refs.cascaderModel.$refs.panel.syncActivePath();
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!