产生问题原因:
el-cascader 最后一级暂无数据是因为后端返回子级children为空,官网的children并不为空。
解决方法:
<el-cascader placeholder="请选择"
v-model="dataForm.caseType"
:options="caseTypeList"
:props="{ label:'name',value:'id',children:'children',checkStrictly: true }"
clearable
:show-all-levels="false"
ref="cascader"
@change="cascaderChange"></el-cascader>
getTreeData (datas) {
// console.log(datas)
let data = []
datas.map((item) => {
if (item.children && item.children.length > 0) {
let dadax = {
name: item.name, // 这是需要展示的数据 我的数据是name,所以label对应的是name
id: item.id,
children: this.getTreeData(item.children)
}
data.push(dadax)
} else {
let dadax = {
name: item.name,
id: item.id
}
data.push(dadax)
}
return data
})
return data
},
cascaderChange (v) {
let nodesObj = this.$refs['cascader'].getCheckedNodes()[0]
this.dataForm.caseType = nodesObj.data.id
// 选择最后一级后收起选择框
!nodesObj.hasChildren && this.$refs['cascader'].toggleDropDownVisible()
},
init () {
this.$nextTick(() => {
this.$http.get('').then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg)
}
this.caseTypeList = this.getTreeData(res.data)
})
})
},