Vue的省份联动

Vue的省份联动

一、安装依赖库

复制代码
npm install element-china-area-data -S




npm install element-ui --save

全局使用elemntui组件库
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

二 、代码如下

复制代码
<template>
  <div>
    <el-cascader size="large" :options="options" v-model="provinces" @change="handleChange" placeholder="请选择省市区"></el-cascader>
    <div>所选省市区: {{ selectedRegion }}</div>
    <el-button type="primary" @click="fillInAddress">回填地址</el-button>
  </div>
</template>

<script>
import { regionData } from "element-china-area-data"; // 引入

export default {
  data() {
    return {
      options: regionData,
      provinces: [],
      selectedRegion: '' // 用于显示选中的省市区中文
    };
  },

  methods: {
    handleChange(value) {
      const text = this.findTextByValue(value); // 调用方法查找选中的省市区的中文文本
      this.selectedRegion = text;
    },

    // 根据选中的省市区代码查找对应的中文文本
    findTextByValue(value) {
      let text = '';
      let data = regionData;
      for (let i = 0; i < value.length; i++) {
        const val = value[i];
        const item = data.find(item => item.value === val);
        if (item) {
          text += item.label;
          if (i !== value.length - 1) {
            text += ' / ';
            data = item.children || [];
          }
        }
      }
      return text;
    },

    // 将从数据库查询出来的地址回填到省份联动选择器中
    fillInAddress() {
      // 假设从数据库查询出来的地址是一个包含省、市、区的地址字符串
      const address = "广东省 深圳市 南山区";
      const addressArray = address.split(' ');
      const valueArray = [];
      let tempOptions = regionData;
      for (let i = 0; i < addressArray.length; i++) {
        const addressItem = addressArray[i];
        const item = tempOptions.find(item => item.label === addressItem);
        if (item) {
          valueArray.push(item.value);
          tempOptions = item.children || [];
        }
      }
      this.provinces = valueArray;
    }
  }
};
</script>

效果图

相关推荐
这儿有一堆花18 分钟前
CSS 拟真光影设计:从扁平到深度的技术复盘
前端·css
_OP_CHEN1 小时前
【前端开发之CSS】(三)CSS 常用元素属性宝典(上):从字体到文本,手把手教你打造高颜值网页!
前端·css·html·网页开发·文本属性·字体属性·页面美化
你脸上有BUG1 小时前
【工程化】记给ant-design-vue打补丁的示例
前端·javascript·vue.js·补丁·ant-design-vue
晚霞的不甘2 小时前
Flutter for OpenHarmony 进阶实战:打造 60FPS 流畅的物理切水果游戏
javascript·flutter·游戏·云原生·正则表达式
雨季6662 小时前
构建 OpenHarmony 文本高亮关键词标记器:用纯字符串操作实现智能标注
开发语言·javascript·flutter·ui·ecmascript·dart
你这个代码我看不懂2 小时前
Vue子父组件.sync
javascript·vue.js·ecmascript
灰灰勇闯IT2 小时前
Flutter for OpenHarmony:布局组件实战指南
前端·javascript·flutter
⑩-3 小时前
Vue框架学习
前端·vue.js·学习
a程序小傲3 小时前
京东Java面试被问:基于Gossip协议的最终一致性实现和收敛时间
java·开发语言·前端·数据库·python·面试·状态模式
小二·3 小时前
Python Web 开发进阶实战:AI 原生应用商店 —— 在 Flask + Vue 中构建模型即服务(MaaS)与智能体分发平台
前端·人工智能·python