【Vue】使用ElementUI组件基于element-china-area-data库实现省市区三级联动的组件封装

效果展示

在这里插入图片描述

依赖包版本

"element-china-area-data": "^6.1.0",
"element-ui": "2.15.6",

组件代码

// components/chinaAreaCascader/index.vue
<template>
  <el-cascader v-model="val" @change="handleChange" :options="options[type]"/>
</template>
<script>
import { provinceAndCityData,regionData,pcTextArr,pcaTextArr, codeToText} from 'element-china-area-data'
export default {
  name: 'chinaAreaCascader',
  props:{
    value:{ //双向绑定的值
      type:Array,
      default:()=>{
        return []
      }
    },
    // 选项类型
    type:{
      type:String,
      default:'regionData' //默认省市区三级联动
    }
  },
  data(){
    return {
      // 选项
      options:{
        provinceAndCityData, //provinceAndCityData省市二级联动 汉字+code
        regionData, //regionData省市区三级联动 汉字+code
        pcTextArr, //pcTextArr省市联动数据,纯汉字
        pcaTextArr, //pcaTextArr省市区联动数据,纯汉字
        codeToText, //codeToText是个大对象,属性是区域码,属性值是汉字 用法例如:codeToText[‘110000’]输出北京市
      },
      val:[] //当前组件的值
    }
  },
  watch:{
    value:{
      handler(newVal) {
        this.val = newVal //绑定外部组件传入的默认值
      },
      deep:true
    }
  },
  methods:{
    // 双向绑定
    handleChange(){
      console.log(this.val,'当前选择')
      this.$emit('input',this.val) //触发input事件,将当前组件的值传给外部组件
    }
  }
}
</script>

使用组件

<template>
	<el-form-item label="活动地点" class="mb5" prop="position">
	  <china-area-cascader v-model="formData.position" type="pcaTextArr" />
	</el-form-item>
</template>
<script>
import ChinaAreaCascader from '@/components/chinaAreaCascader/index.vue'

export default {
  components: { ChinaAreaCascader },
  data() {
  	formData:{
  		position:[], //省市区位置
	}
  }
}
</script>

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 17:22:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 17:22:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 17:22:01       57 阅读
  4. Python语言-面向对象

    2024-07-18 17:22:01       68 阅读

热门阅读

  1. Unity:UI进入离开事件

    2024-07-18 17:22:01       19 阅读
  2. opencv—常用函数学习_“干货“_6

    2024-07-18 17:22:01       18 阅读
  3. web前端 Vue 框架面试120题(四)

    2024-07-18 17:22:01       18 阅读
  4. 富格林:可信办法阻挠虚假受骗

    2024-07-18 17:22:01       19 阅读
  5. ClickHouse中使用UNION

    2024-07-18 17:22:01       20 阅读
  6. vue3项目中pinia的用法详解(值得收藏)

    2024-07-18 17:22:01       20 阅读
  7. jd-gui反编译出现中文乱码问题

    2024-07-18 17:22:01       18 阅读
  8. CL11命令行解析使用实例

    2024-07-18 17:22:01       19 阅读
  9. PCB的层叠结构

    2024-07-18 17:22:01       18 阅读
  10. vim+cscope+ctags

    2024-07-18 17:22:01       23 阅读
  11. gitlab reset passwd

    2024-07-18 17:22:01       20 阅读
  12. 02-Redis未授权访问漏洞

    2024-07-18 17:22:01       21 阅读
  13. 开发一个商城app需要多少钱

    2024-07-18 17:22:01       21 阅读