后端接口由于某种原因无法调试,可先行在json文件中调试,将后端返回的F12中的数据右键复制为Object形式,粘贴至VSCode的json文件中。
目标:将json文件中的数据回显至级联选择器中。
1.vue文件的template中:
v-model:选中的选项
options:json(后端)中传递的所有选项
props:下拉列表props指定
change-on-select:是否允许选择任意一级的选项,默认为true
@change:选项发生改变的事件
show-all-levels:输入框中是否显示选中值的完整路径,默认为true
<el-cascader
v-model="monitorValue"
:options="monitorOptions"
:props="cascaderProps"
change-on-select
@change="handleChange"
:show-all-levels="false"
clearable
node-key="indexCode"
></el-cascader>
2.vue文件中的script中:
import axios from "axios";
data中:
monitorValue: null, // 级联选择器选中的值
monitorOptions: [], // 级联选择器选项
cascaderProps: {
value: "indexCode",
label: "name",
children: "children",
emitPath: false, // 在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值
checkStrictly: true, // 是否严格的遵守父子节点不互相关联
expandTrigger: "hover", // 次级菜单的展开方式
},
mounted() {
this.getMonitorData();
},
methods: {
// 获取数据
getMonitorData() {
axios.get("/static/data.json").then(res => {
if (res.data) {
this.monitorOptions = this.changeData(res.data.children[0]);
} else {
this.$message.warning("请稍后再试");
}
});
},
// 级联选择器的值改变
handleChange() {
if (this.monitorValue) {
} else {
this.monitorData = [];
}
},
// 调整数据
changeData(data) {
// 去除children为空
setdata(data);
function setdata(data) {
if (data.children) {
if (data.children.length > 0) {
data.disabled = true;
data.children.forEach((item) => {
setdata(item);
});
} else {
delete data.children;
}
}
}
return [data];
},
|