elementUI提供了 getCheckedNodes 这个方法 可以拿到父级id 但会出现下边这个问题
当我们半选的时候 拿到的只有最后一级的value 是拿不到父级的value。这咋整呢
试一下用递归
<template>
<div class="app-container">
<div class="ranges">
<div style="display:flex">
<span class="isall">这个是用递归的方法</span>
<el-cascader ref="readLvlRef" style="width:300px;margin-top:2px" :options="deptNameOptions" :props="cascaderOpt"
v-model="readLvl" @change="downloadChange" collapse-tags clearable></el-cascader>
<span class="isall">这个是用elementui提供的方法</span>
<el-cascader ref="downLoadLvlRef" style="width:300px;margin-top:2px" :options="deptNameOptions"
v-model="downLoadLvl" :props="cascaderOpt" collapse-tags :show-all-levels="false" clearable
@change="getCheckedNodes"></el-cascader>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'CtrlDocUpdatePage',
components: {},
props: {},
data() {
return {
currentCtrlDoc: {},
cascaderOpt: {
multiple: true,
emitPath: false,
},
readLvl: [],
downLoadLvl: [],
getAllVal:[],
deptNameOptions: [
{
value: 1,
label: '东南',
children: [
{
value: 2,
label: '上海',
children: [
{ value: 3, label: '普陀' },
{ value: 4, label: '黄埔' },
{ value: 5, label: '徐汇' },
],
},
{
value: 7,
label: '江苏',
children: [
{ value: 8, label: '南京' },
{ value: 9, label: '苏州' },
{ value: 10, label: '无锡' },
],
},
{
value: 12,
label: '浙江',
children: [
{ value: 13, label: '杭州' },
{ value: 14, label: '宁波' },
{ value: 15, label: '嘉兴' },
],
},
],
},
{
value: 17,
label: '西北',
children: [
{
value: 18,
label: '陕西',
children: [
{ value: 19, label: '西安' },
{ value: 20, label: '延安' },
],
},
{
value: 21,
label: '新疆维吾尔族自治区',
children: [
{ value: 22, label: '乌鲁木齐' },
{ value: 23, label: '克拉玛依' },
],
},
],
},
],
saveNodeTmp: [],
}
},
created() {},
methods: {
getCheckedNodes() {
let downLoadLvl = this.$refs.downLoadLvlRef.getCheckedNodes()
downLoadLvl.forEach(item=>{
console.log(item.value)
})
},
// 获取全部节点
findAllNode(data) {
if (!this.saveNodeTmp.includes(data.value)) {
this.saveNodeTmp.push(data.value)
}
if (data.parent) {
this.findAllNode(data.parent)
}
},
// change时
downloadChange(data) {
let readSelectedAllNode = this.$refs.readLvlRef.getCheckedNodes()
let readSelectedNode = []
// 获取所选的全部节点
this.saveNodeTmp = []
readSelectedAllNode.forEach(item => {
this.findAllNode(item)
})
readSelectedNode = [...this.saveNodeTmp]
console.log(readSelectedNode)
},
},
watch: {},
}
</script>
<style lang="scss" scoped>
</style>