Vue使用el-cascader 实现多级下拉菜单

代码:

<template>
  <div>
<div class="block">
  <span class="demonstration">默认 click 触发子菜单</span>
  <el-cascader
    v-model="value"
    :options="options"
    @change="handleChange"></el-cascader>
</div>
<div class="block">
  <span class="demonstration">hover 触发子菜单</span>
  <el-cascader
    v-model="value"
    :options="options"
    :props="{ expandTrigger: 'hover' }"
    @change="handleChange"></el-cascader>
</div>
</div>
</template>


<script>
  export default {
    data() {
      return {
        options: [],
        father:[{id:1,pid:'0',name:'安徽省',code:'340000',level:1},{id:13,pid:'0',name:'河北省',code:'350000',level:1}],
        children :[{code: "340800",id: 139,name:"安庆市",Level: 2,pid: "340000"},{code: "340300",id: 134,name:"蚌埠市",pid:"340000",level: 2},{code: "340301",id: 134,name:"唐山市",pid:"350000",level: 2}],
        grandChild:[{code: "340800",id: 139,name:"安庆市",Level: 3,pid: "340800"},{code: "340300",id: 139,name:"蚌埠市",Level: 3,pid: "340300"},{code: "340301",id: 139,name:"路北区",Level: 3,pid: "340301"}]
      };
    },
    mounted(){
      let data = [];
  this.father.forEach(fatherObj => {
  let fatherOption = {
    value: fatherObj.name,
    label: fatherObj.name,
    children: []
  };

  this.children.forEach(childObj => {
    if (fatherObj.code === childObj.pid) {
      let childOption = {
        value: childObj.name,
        label: childObj.name,
        children: []
      };

    this.grandChild.forEach(grandChildObj => {
        if (childObj.code === grandChildObj.pid) {
          let grandChildOption = {
            value: grandChildObj.name,
            label: grandChildObj.name
          };

          childOption.children.push(grandChildOption);
        }
      });

      fatherOption.children.push(childOption);
    }
  });

  data.push(fatherOption);
  this.options=data
});
    },
    methods: {
      handleChange(value) {
        console.log(value);
      }
    },
  
  };
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3中使用el-cascader组件实现地址选择的步骤如下: 1. 首先,安装并导入Element Plus库。可以使用以下命令安装Element Plus: ``` npm install element-plus ``` 然后在项目的入口文件(通常是main.js)中导入Element Plus库: ```javascript import { createApp } from 'vue' import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' createApp(App).use(ElementPlus).mount('#app') ``` 2. 在需要使用el-cascader的组件中导入el-cascader组件: ```javascript import { Cascader } from 'element-plus' ``` 3. 在模板中使用el-cascader组件,并绑定相关的属性和事件: ```html <template> <Cascader :options="options" v-model="selectedAddress" @change="handleAddressChange" placeholder="请选择地址" /> </template> ``` 其中,`:options`用于设置级联选择的选项数据,`v-model`用于双向绑定选择的地址,`@change`用于监听地址变化的事件。 4. 在组件的data中定义相关的数据和选项: ```javascript export default { data() { return { options: [ { value: 'province1', label: '省份1', children: [ { value: 'city1', label: '城市1', children: [ { value: 'area1', label: '区域1', }, { value: 'area2', label: '区域2', }, ], }, { value: 'city2', label: '城市2', children: [ { value: 'area3', label: '区域3', }, { value: 'area4', label: '区域4', }, ], }, ], }, // 其他省市区的数据... ], selectedAddress: [], // 用于保存选中的地址 } }, methods: { handleAddressChange(value) { console.log('选择的地址:', value) }, }, } ``` 以上就是使用el-cascader实现地址选择的基本步骤。根据你的实际需求,可以根据el-cascader组件的文档进行更详细的配置和样式调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值