el-cascader遍历修改键名,实现联级查找

这篇博客讲述了如何在Vue应用中,使用自定义函数将接收到的name和id键名转换为el-cascader组件所需的value和label键名。通过遍历数据并递归构造新的树形结构,实现了数据适配。同时,展示了如何在change事件中获取并处理选定的值。
摘要由CSDN通过智能技术生成

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
}
根据提供的代码,可以看出el-cascader组件的v-model属性存储了el-cascader选择的值,而el-cascader的options属性存储了级联选择器的选项数据。如果你想要将el-cascader的label回显到el-table中,你可以使用el-table的slot-scope属性来获取el-cascader选中的值,并在el-table中使用对应的label进行回显。具体的步骤如下: 1. 在el-table的列定义中,使用slot-scope属性来获取el-cascader选中的值。 2. 使用v-for指令遍历el-table的列定义,将el-cascader的label回显到el-table中。 以下是示例代码: ```html <el-table :data="tableData"> <el-table-column v-for="column in columns" :label="column.label" :key="column.prop"> <template slot-scope="scope"> <span v-if="column.prop === 'cascader'">{{ getLabelFromCascader(scope.row.cascader) }}</span> <span v-else>{{ scope.row[column.prop }}</span> </template> </el-table-column> </el-table> ``` ```javascript export default { data() { return { tableData: [ { cascader: ['1', '2'], name: 'John' }, { cascader: ['1', '3'], name: 'Jane' }, ], columns: [ { label: 'Cascader', prop: 'cascader' }, { label: 'Name', prop: 'name' }, ], options: [ { Id: '1', Name: '成都', Childlist: [ { Id: '2', Name: '济南' }, { Id: '3', Name: '上海' }, ], }, ], } }, methods: { getLabelFromCascader(value) { const labels = [] let options = this.options for (const val of value) { const option = options.find(opt => opt.Id === val) labels.push(option.Name) options = option.Childlist } return labels.join(' > ') }, }, } ``` 在上面的示例代码中,我们使用了getLabelFromCascader方法来获取el-cascader选中值对应的label。通过遍历options数据,我们可以逐级获取每个选中值的label,并使用join方法将它们连接起来。最后,将getLabelFromCascader方法应用于el-table的列定义中的slot-scope中,以回显el-cascader的labelel-table中。 希望这可以帮助到你!如果你还有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值