vue+elementUi中国省市区/省市,三级/两级联动选择

安装城市数据:

终端输入:

npm install element-china-area-data -S

省市不带‘全部’的二级联动:

  1. 导入二级数据:
//二选一
import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from 'element-china-area-data';
import { provinceAndCityData } from 'element-china-area-data'
  1. HTMl:
<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
  1. js:
export default {
    data () {
      return {
        options: provinceAndCityData,
        selectedOptions: []
      }
    },
 
    methods: {
      handleChange () {
        var loc = "";
        for (let i = 0; i < this.selectedOptions.length; i++) {
            loc += CodeToText[this.selectedOptions[i]];
        }
        console.log(loc)//打印区域码所对应的属性值即中文地址
      }
    }
     //也可以这样写
    handleChange (value) {
        console.log(value)
      }
  }
  1. 效果预览:
    在这里插入图片描述

省市带‘全部’的二级联动:

  1. 导入二级数据:
import { provinceAndCityDataPlus } from 'element-china-area-data'
  1. HTMl:
<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
  1. js:
export default {
    data () {
      return {
        options: provinceAndCityDataPlus ,
        selectedOptions: []
      }
    },
 
    methods: {
      handleChange () {
        var location = "";
        for (let i = 0; i < this.selectedOptions.length; i++) {
            location+= CodeToText[this.selectedOptions[i]];
        }
        console.log(location)//打印区域码所对应的属性值即中文地址
      }
    }
    //也可以这样写
    handleChange (value) {
        console.log(value)
      }
  }
  1. 效果预览:
    在这里插入图片描述

省市区不带‘全部’三级联动选择:

  1. 导入三级数据:
import { regionData } from 'element-china-area-data'
  1. HTMl:
<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
  1. js:
export default {
    data () {
      return {
        options: regionData ,
        selectedOptions: []
      }
    },
 
    methods: {
      handleChange () {
        var loc = "";
        for (let i = 0; i < this.selectedOptions.length; i++) {
            loc += CodeToText[this.selectedOptions[i]];
        }
        console.log(loc)//打印区域码所对应的属性值即中文地址
      }
    }
     //也可以这样写
    handleChange (value) {
        console.log(value)
      }
  }
  1. 效果预览:
    在这里插入图片描述

省市区带‘全部’三级联动选择:

  1. 导入三级数据:
import { regionDataPlus } from 'element-china-area-data'
  1. HTMl:
<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>
  1. js:
export default {
    data () {
      return {
        options: regionDataPlus ,
        selectedOptions: []
      }
    },
 
    methods: {
      handleChange () {
        var loc = "";
        for (let i = 0; i < this.selectedOptions.length; i++) {
            loc += CodeToText[this.selectedOptions[i]];
        }
        console.log(loc)//打印区域码所对应的属性值即中文地址
      }
    }
     //也可以这样写
    handleChange (value) {
        console.log(value)
      }
  }
  1. 效果预览:
    在这里插入图片描述
  • 19
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
您可以使用Vue.js与TypeScript结合Element Plus来实现省市区三级联动。以下是一个简单示例: 首先,安装Element Plus和相应的类型声明文件: ```bash npm install element-plus npm install @types/element-plus ``` 然后,创建一个Vue组件,并在其中使用Element Plus的Cascader组件: ```vue <template> <div> <el-cascader v-model="selectedValues" :options="options" :props="props" @change="handleChange" ></el-cascader> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import { Cascader, CascaderOption } from 'element-plus'; export default defineComponent({ name: 'AddressCascader', components: { [Cascader.name]: Cascader, }, data() { return { selectedValues: [], options: [ { value: '北京', label: '北京', children: [ { value: '东城区', label: '东城区', children: [ { value: '安定门', label: '安定门', }, { value: '建国门', label: '建国门', }, ], }, // 其他区... ], }, // 其他省份... ], props: { value: 'value', label: 'label', children: 'children', }, }; }, methods: { handleChange(value: string[]) { // 处理选择的值 console.log(value); }, }, }); </script> ``` 在这个示例中,我们使用了Element Plus的Cascader组件来实现省市区三级联动。通过绑定`v-model`指令,我们可以获取用户选择的值,并在`handleChange`方法中进行处理。 请注意,示例中的数据是静态的,您可以根据实际情况进行修改,例如从后端获取数据并动态生成选项。 希望这个示例能够帮助您实现省市区三级联动

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值