赞
踩
shigen
坚持更新文章的博客写手,擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长,分享认知,留住感动。
在一些需要填写地址的前端页面中,总是少不了需要填写地址的级联选择器,类似这样的:
在某依框架中,是直接把省市区的地址和编码放在了数据库里。个人觉得还是很头疼的:
那有没有简单的方式呢?当然是有的,前端就有这样的一个库:
npm install element-china-area-data
具体的使用可以参考对应的官方文档或者博客vue+Element UI 实现中国省市区三级联动。
但是,shigen
还是觉得麻烦,没错,可能我比较抓紧细节。
上周我们的vue项目我安装了一下,用的淘宝npm
景象,下载依赖的时候,竟然报错这个包找不到,最后换成了官方的镜像才找到的。正巧,今天看到了这个文档,我真觉得这个组件很大,功能强大,但是用的很少。为什么不自己封装一个呢?
说干就干。在gitee上找到了这个项目:中国省市区数据。这个json文件里就是全部的json数据:
具体的数据选择,也可参考官方文档:中国省市区数据项目。shigen
的gitee页面突然卡住了,不知道是不是官方在升级,刷新了好几次都没用。
有了这个数据,我又想到了Element-ui有一个组件叫做el-cascader
,正好实现级联的效果。打开el-cascader文档,我开始了封装:
<template> <div> <el-cascader :options="options" :props="{ checkStrictly: true, value: 'code', label: 'name' }" ref="cascaderAddr" v-model="selectedOptions" @change="handleChange"> <template slot-scope="{ node, data }"> <span>{{ data.name }}</span> <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> </template> </el-cascader> <p>{{ addrCodes }} {{ addrCodesSelected }}</p> </div> </template> <script> let pcas = require('@/assets/pcas-code.json') export default { name: 'ChinaPca', data() { return { options: pcas, selectedOptions: [], addrCodes: [], addrCodesSelected: [], } }, methods: { // 获取省市区地址级联 handleChange(thsAreaCode) { thsAreaCode = this.$refs['cascaderAddr'].getCheckedNodes()[0] this.addrCodes = thsAreaCode.path this.addrCodesSelected = thsAreaCode.pathLabels console.log(this.addrCodesSelected); } } } </script>
代码里没有设置对应的传值绑定方法,可以自行定义。
最后运行的效果是这样的:
存储到后端只用对选择的值稍微处理一下即可。
以上就是今天分享的全部内容了,觉得不错的话,记得点赞 在看 关注
支持一下哈,您的鼓励和支持将是shigen
坚持日更的动力。同时,shigen
在多个平台都有文章的同步,也可以同步的浏览和订阅:
平台 | 账号 | 链接 |
---|---|---|
CSDN | shigen01 | shigen的CSDN主页 |
知乎 | gen-2019 | shigen的知乎主页 |
掘金 | shigen01 | shigen的掘金主页 |
腾讯云开发者社区 | shigen | shigen的腾讯云开发者社区主页 |
微信公众平台 | shigen | 公众号名:shigen |
与shigen
一起,每天不一样!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。