1.效果图
2.需求描述
el-cascader中提供数的节点名称是value和label,而我现在拿到的是name和id,要把这两个键名改成el-cascader需要的,即把这样
改成这样
3.实现
ref用于后续获取该节点
<el-cascader
v-model="areaName"
ref="cascader"
:options="treeData"
:props="{ expandTrigger: 'hover' }"
@change="handleChange"
/>
// 获取地区树联级数据
getTeeData() {
const mapTree = org => {
// 给需要的键名赋值的方法
const haveChildren = Array.isArray(org.children) && org.children.length > 0
return {
label: org.name,
value: org.id,
// 没有子节点了就置空,不然还有空白的节点展示在选择项中占位
children: haveChildren ? org.children.map(i => mapTree(i)) : null
}
}
tree.getAreaTree().then((res) => {
this.treeData = res.map(org => mapTree(org))
})
},
handleChange(value) {
// 得到所有经过的节点的value构成的数组,但我只需要最后一个子节点的value
this.formInline.areacode = value[value.length - 1]
this.formInline.areaname = this.$refs.cascader.getCheckedNodes()[0].label
}