使用vue+mintui 开发省市区功能
做移动端的都知道 经常会有省市区这种三级联动的功能 今天研究了一下午~
1.准备工作 vue+mintui+省市区的json数据
下载地址:https://github.com/chzm/address_popup
下载好后需要3个json文件 进入dist找到这3个文件

将这3个文件放入到vue项目里
新建一个处理这3个json方法的文件

import provinces from '../../static/provinces.json'
import areas from '../../static/areas.json'
import cities from '../../static/cities.json' export const zmGetProvinces = () => {
return provinces;
} export const zmGetcities = (provinceCode) => {
if (!provinceCode) {
provinceCode = '11'
}
let citiesArr = [];
cities.forEach(function (item) {
if (item.provinceCode == provinceCode) {
console.log(item)
citiesArr.push(item)
}
})
return citiesArr
} export const zmGetareas = (cityCode) => {
// console.log(areas)
if (!cityCode) {
cityCode = '1101'
}
let areasArr = [];
areas.forEach(function (item) {
if (item.cityCode == cityCode) {
areasArr.push(item)
}
})
return areasArr
}
在这文件处理下数据依次导出
接着可以将省市区做成一个组件方便后续使用 这里我使用的是mintui里的popup和picker这2个组件来搭配

<template>
<div>
<mt-popup class="pop" v-model="sexpopup" position="bottom">
<mt-picker :slots="slots" valueKey="name" @change="onValuesChange"></mt-picker>
</mt-popup>
</div>
</template> <script>
import { zmGetProvinces, zmGetcities, zmGetareas } from "@/utils/zmRegion.js";
export default {
props: ["result"],
data() {
return {
slots: [
{
flex: 1,
values: zmGetProvinces(),
className: "slot1",
textAlign: "right"
},
{
divider: true,
content: "",
className: "slot2"
},
{
flex: 1,
values: zmGetcities("11"),
className: "slot1",
textAlign: "conter"
},
{
divider: true,
content: "",
className: "slot2"
},
{
flex: 1,
values: zmGetareas("1101"),
className: "slot3",
textAlign: "center"
}
],
region: "",
regionInit: false,
sexpopup: this.result
};
},
watch: {
result(val) {
this.sexpopup = val;
},
sexpopup(val) {
this.$emit("changepop", val);
}
},
methods: {
onValuesChange(picker, values) {
if (this.regionInit) {
if (values[0] && values[1] && values[2]) {
this.region =
values[0]["name"] + values[1]["name"] + values[2]["name"];
console.log(this.region); //给市、县赋值
let area = "";
if (values[0].name == "北京市") {
area = "1101";
} else if (values[0].name == "天津市") {
area = "1201";
} else {
area = values[1]["code"];
}
picker.setSlotValues(1, zmGetcities(values[0]["code"]));
picker.setSlotValues(2, zmGetareas(area)); // this.$emit("getRegion", this.region);
} else {
console.log("数据不全");
}
} else {
this.regionInit = true;
}
console.log(this.regionInit);
}
}, created() {}
};
</script> <style scoped>
.pop {
width: 100%;
}
</style>
这里有个坑就是天津和北京市这2个地方滑动的时候数据不会重新刷新 在这里做了个处理

最后将组件导入需要用到的地方

这里用到了props组件见的双向绑定 自行百度~~
使用一个点击事件改变sexpopup的状态
最后附上效果图 大功告成 记录下!~~~~~

使用vue+mintui 开发省市区功能的更多相关文章
- vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)
demo及源码地址 https://github.com/artiely/citypicker 先去下载一个“省份.城市.区县.乡镇” 四级联动数据,然后 引入 import { Picker } f ...
- 基于 Vue+Mint-ui 的 Mobile-h5 的项目说明
Vue作为前端三大框架之一,其已经悄然成为主流,学会用vue相关技术来开发项目会相当轻松. 对于还没学习或者还没用过vue的初学者,基础知识这里不作详解,推荐先去相关官网,学习一下vue相关的基础知识 ...
- 基于 Laravel、Vue.js开发的全新社交系统----ThinkSNS+
什么是ThinkSNS+ ThinkSNS(简称TS)始于2008年,一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+.新的产品名 ...
- 用Vue.js开发微信小程序:开源框架mpvue解析
前言 mpvue 是一款使用 Vue.js 开发微信小程序的前端框架.使用此框架,开发者将得到完整的 Vue.js 开发体验,同时为 H5 和小程序提供了代码复用的能力.如果想将 H5 项目改造为小程 ...
- 前端工程化(三)---Vue的开发模式
从0开始,构建前后端分离应用 导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord ...
- Vue+koa2开发一款全栈小程序(1.课程介绍+2.ES6入门)
1.课程介绍 1.课程概述 1.做什么? Vue+koa2开发一款全栈小程序 2.哪些功能? 个人中心.图书列表.图书详情.图书评论.个人评论列表 3.技术栈 小程序.Vue.js.koa2.koa- ...
- electron-vue:Vue.js 开发 Electron 桌面应用
相信很多同学都知道 Electron 可以帮助开发人员使用前端技术开发桌面客户端应用,今天介绍的 electron-vue 框架是一套基于 Vue.js 开发 Electron 桌面应用的脚手架,该项 ...
- vue前端开发那些事——vue组件开发
vue的学习曲线不是很陡(相比其它框架,如anglarjs),官方文档比较全面,分为基础篇和高级篇.我们刚开始学习的时候,肯定像引用jquery那样,先把vue的js引进来,然后学习基础内容.如果仅仅 ...
- 示例vue 的keep-alive缓存功能的实现
本篇文章主要介绍了vue 的keep-alive缓存功能的实现,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指正. Vue 实现组件信息的缓存 当我们 ...
随机推荐
- NFS实现多服务器文件共享
服务器 1.安装所需的软件包 yum install -y rpc-bind nfs-utils 2.设为开机自启动 systemctl enable nfs systemctl enable rpc ...
- .net core 读取、修改配置文件appsettings.json
.net core 设置读取JSON配置文件 appsettings.json Startup.cs 中 public class Startup { public Startup(IHostingE ...
- python 跨目录访问文件
1.同级.同目录的文件之间的访问 有这样一个目录结构 假如,in_A.py 这个文件想调用 hello_world.py 中的函数怎么办呢? --->>> import 只需在 i ...
- Linux系统快速入门方法
相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣 ...
- ThreadLocal简解
ThreadLocal特点 ThreadLocal实现了线程间数据隔离,ThreadLocal的实例代表了一个线程局部的变量,每条线程都只能看到自己的值,并不会意识到其它的线程中也存在该变量.简单来说 ...
- 【开发工具】- 如何导出/导入Idea的配置文件
导出配置 打开工具,找到 file -> export setting ,选择路径即可,导出的是setting.jar文件. 导入配置 file –> import setttings – ...
- Js判断对象是否是数组的方法
1.ECMAScript5中有一个现成的方法:Array.isArray(). var obj = {1:[1],2:[2]}, arr = [1], str = "1"; Arr ...
- unnitest+HtmlRunner生成测试报告
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/5/5 21:23 # @Author : ChenAdong # @emai ...
- liunx 安装nc/netcat centos安装netcat
如果本文对你有用,请爱心点个赞,提高排名,帮助更多的人.谢谢大家!❤ 如果解决不了,可以在文末进群交流. 1:下载源码包,wget https://sourceforge.net/projects/n ...
- 通过request获取服务器相对路径及绝对路径
一. String scheme = request.getScheme();//http String serverName = request.getServerName();//localhos ...