vue-cli3项目使用mint-ui 利用popup结合picker实现省市联动封装组件......
2019-02-22 14:40
1136 查看
最近项目上线部署完毕闲着没事, 感觉mint-ui里面的picker组件和自己的需求有冲突,所以就基于它自己封装了一个省市联动组件!
1:父组件调用子组件的地方
注册组件什么的就不说了
[code]<mt-button type="primary" size="small" @click="getcode()">选择地址</mt-button> 地址是:{{Provin}} --- {{city}} <Pockers :Province="Province" ref="Pocker" v-on:childByValue="childByValue"> </Pockers>
Province //传给组件的json数据
v-on:childByValue //获取子组件返回的最终选择地址
附上methods里面的两个方法
[code]methods:{ childByValue: function (Provin,city) {//实时监测子组件传递过来的数据 this.Provin = Provin; this.city = city; }, getcode(){ this.$refs.Pocker.popupVisible = true; }, },
2:子组件代码 Picker
[code]<template> <div> <mt-popup v-model="popupVisible" position="bottom" > <mt-picker :slots="slots" @change="onValuesChange" :visibleItemCount="5" showToolbar> <div class="picker-toolbar-title"> <div class="usi-btn-cancel" @click="popupVisible = !popupVisible">取消</div> <div class="">请选择城市</div> <div class="usi-btn-sure" @click="popupVisible = !popupVisible">确定</div> </div> </mt-picker> </mt-popup> </div> </template> <script> export default { props:['Province'],//父组件传递过来的组件数据 data(){ return{ popupVisible:false,//控制弹窗是否显示 这里是自下而上的方向 slots: [ { flex: 1, values:this.Provincelist(), //省份数组 className: 'slot1', textAlign: 'left' }, //分隔符 { divider: true, content: '--', className: 'slot2' }, //市 { flex: 1, values:this.cities('河北省'), className: 'slot3', textAlign: 'right' } ], Provin:'',//省份 city:'',//市区 } }, methods:{ onValuesChange(picker, values) {//当滑动内容发生改变的时候 if(this.popupVisible){ picker.setSlotValues(1, this.cities(values[0])); this.Provin = values[0] this.city = values[1] this.$emit('childByValue', this.Provin,this.city)//实时返回最新值给父组件 } }, Provincelist(){//省份 let list = [] this.Province.provinces.forEach(item => { list.push(item.provinceName) }); return list }, cities(provinceArray){//市区 let cityArr = [] this.Province.provinces.forEach(item =>{ if(item.provinceName === provinceArray){ item.citys.forEach(ages =>{ cityArr.push(ages.citysName) }) } }) return cityArr } }, mounted(){} } </script> <style lang="less" scoped> .mint-popup-bottom { width:100%; background:blanchedalmond; } .picker-toolbar-title { display: flex; flex-direction: row; justify-content: space-around; height: .4rem; line-height: .4rem; font-size: .16rem; } .usi-btn-cancel, .usi-btn-sure { color: #FF6600 } </style>
如有不对之处,请各位大佬指正....
相关文章推荐
- vue用mint-ui的picker组件封装一个省市区三级联动组件
- 使用mint-ui popup和picker实现手机端选择性别的功能踩到的坑
- vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
- Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信
- 利用vue+elementUI实现部分引入组件的方法详解
- 【干货】利用MVC5+EF6搭建博客系统(四)(上)前后台页面布局页面实现,介绍使用的UI框架以及JS组件
- vue实现图片预览组件的封装与使用
- 在vue中使用高德地图的下属省市区查询,实现省市区的联动以及规划范围
- Vue.js组件tree实现省市多级联动
- vue项目中使用mint-ui的上拉加载更多时,ios遇到留白情况
- 在vue项目中使用element-ui的Upload上传组件的示例
- 使用mint-ui实现省市区三级联动效果的示例代码
- Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)
- vue学习之mintui picker选择器实现省市二级联动
- vue使用mint-ui实现上拉刷新
- Vue2.0与 [百度地图] 结合使用———vue+webpack+axios+百度地图实现组件之间的通信
- vue学习之mintui picker选择器实现省市二级联动示例
- vue2.0 使用element-ui里的upload组件实现图片预览效果
- 在vue项目中安装使用Mint-UI的方法
- vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能