vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)

先去下载一个“省份、城市、区县、乡镇” 四级联动数据,然后

引入

import { Picker } from ‘mint-ui‘; //前提是npm install mint-ui -S

Vue.component(Picker.name, Picker);

组件使用

 <mt-picker :slots="addressSlots" class="picker" @change="onAddressChange" :visible-item-count="5" ></mt-picker >

<mt-picker :slots="streetSlots" ref="picker" class="picker" @change="onStreetChange" :visible-item-count="5" ></mt-picker >
上门服务地址:{{ addressProvince }} {{ addressCity }}

组件方法

<script type="text/ecmascript-6" >

  import s from ‘../../statics/mobile/json/address4.json‘

  export default {
    name: ‘address‘,
    data () {
      return {
        companyName:‘‘,
        addressSlots: [
          {
            flex: 1,
            defaultIndex: 1,
            values: Object.keys(s),
            className: ‘slot1‘,
            textAlign: ‘center‘
          }, {
            divider: true,
            content: ‘-‘,
            className: ‘slot2‘
          }, {
            flex: 1,
            values: [],
            className: ‘slot3‘,
            textAlign: ‘center‘
          }, {
            divider: true,
            content: ‘-‘,
            className: ‘slot4‘
          }, {
            flex: 1,
            values: [],
            className: ‘slot5‘,
            textAlign: ‘center‘
          }
        ],
        streetSlots: [
          {
            flex: 1,
            values: [],
            className: ‘slot1‘,
            textAlign: ‘center‘
          }
        ],
        addressProvince: ‘省‘,
        addressCity: ‘市‘,
        addressXian: ‘区‘,
        addressStreet: ‘街道‘,

      }
    },
    methods: {

      onAddressChange(picker, values) {
        let sheng = Object.keys(s);
        let shi = Object.keys(s[values[0]]);
        let xian = s[values[0]][shi[0]];
        this.xianObj = xian;
        picker.setSlotValues(1, shi);
        this.addressProvince = values[0];
        this.addressCity = values[1];
        this.addressXian = values[2];
        picker.setSlotValues(2, Object.keys(xian));
      },
      onStreetChange(picker, values){
        this.addressStreet = values[0]
      },

    },
    watch: {
      ‘addressXian‘: {
        handler(val, oval){
          let street = this.xianObj[this.addressXian]
          this.streetSlots[0].values = street
        }
      }
    },
    created(){

    },
    mounted(){
      this.$nextTick(() => {
        setInterval(() => {//这个是一个初始化默认值的一个技巧
          this.addressSlots[0].defaultIndex = 0;
        }, 1000);
      });

    }
  }
</script >

完成效果

时间: 2024-10-10 06:33:13

vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)的相关文章

Vue实现仿淘宝商品详情属性选择的功能

Vue实现仿淘宝商品详情属性选择的功能 2018年09月07日 17:13:35 yx_cos 阅读数:278 先看下效果图:(同个属性内部单选,属性与属性之间可以多选) 主要实现过程: 所使用到的数据类型是(一个大数组里面嵌套了另一个数组)具体格式如下: attrAndValuees: [   {   'attrId': 1,   'attrName': '味道',   'valuees': [   {   'attrId': 1,   'value': '橘子味'   },   {   'a

vue mint ui 手册文档对于墙的恐惧

npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i mint-ui -S CDN 目前可以通过 unpkg.com/mint-ui 获取到最新版本的资源,在页面上引入 js 和 css 文件即可开始使用. <!-- 引入样式 --><link rel="stylesheet" href="https://unpkg.com/mint-ui/lib/style.css"><!-- 引入

自动识别地址省市区、手机号、姓名,淘宝的地址自动识别

由于公司软件需求,需要将一段字符串进行解析出省.市.区.街道.详细地址.手机.姓名.类似淘宝的地址自动识别,研究了一个下午加一个上午,换了好多种算法. 手机号这个不难,将字符串用特定的符号分割,如:英文逗号.中文逗号.空格分割出来的数组进行字数统计,找到11位字符且可以转换为数字的就是手机号,当然不嫌麻烦也可以用正则 姓名这个不简单,如果输入的都是正常的姓名那也简单,做一个百家姓的数据表.匹配第一个字,且字数不要超过4个.中国4个字的姓名真的不多.但现在地址里写的可能都不会是真实姓名,且超过5个

淘宝从几百到千万级并发的十四次架构演进之路!

1.概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 2.基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍: 分布式系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上 高可用系统中部分节点失效时,

vue仿淘宝地址选择组件

Vue组件:省市区地址选择组件 <template> <div v-show="addressSelectShow" :style="{'left': leftValue + 'px', 'top': topValue + 'px' }" class="content"> <ul class="area-select"> <li v-for="(item, index) in

收货地址--实现省市区三级联动和使用drf-extensions扩展使用缓存

主要实现省市区三级联动和在Django REST framework中使用缓存. 在用户录入地址时,需要进行省市区的选择.在页面加载时,向后端请求省份数据,当用户选择确定省份后,向后端请求该省份的城市数据:在用户选择确定城市数据后,向后端请求该城市的区县信息.我们把这个过程称为省市区三级联动. 我们新建一个应用areas来实现省市区三级联动. 1)终端:cd meiduo_mall/meiduo_mall/apps 2)创建areas子应用:python ../../manage.py star

天猫,淘宝,京东收货信息中,自动识别手机号、姓名、省市区

最近工作需要,需要从一串字符串中识别出姓名,手机号和省市区,例如下面的一些字符串: 橱之友,包卫贞,13600000000,浙江省宁波市,慈溪市,庵东镇 杭州湾新区世纪城翠湖苑5栋2000[识别出]姓名为"包卫贞",手机号为"13600000000",省市区为"浙江省 宁波市 慈溪市"marui谢sir,谢义海,13900000000,江苏省南京市,秦淮区,健康路1号水游城5楼1号[识别出]姓名为"谢义海",手机号为"

微信共享收货地址 edit_address:fail 吐白沫级解决方案

又被微信坑了一整天,看完官方文档怎么测试都不通过,我一直怀疑是新版本微信支付我没有设置“共享收货地址”开关造成的. 后来经过验证,新版本不需要做这件事了. 那么,我没错,是微信的文档没及时更新... 查了几个技术博客得知,这个接口在2016年的年中已经升级了,旧版的那个接口不能使了. 于是那个什么Addrsign就去见鬼了. 真的无力吐槽微信团队的文档水平和工作态度,这一家独大的优越感.. 好了好了,说正事儿: 首先,你得开通微信支付,其次,要在微信公众后台配置个安全域名的URL,设置下微信支付

CSHOP收货人收货地址信息的省市区改成非必选项

第一步,先修改相关JS文件打开 /js/shopping_flow.js 文件将下面JS代码删除掉 if (frm.elements['province'] && frm.elements['province'].value == 0 && frm.elements['province'].length > 1)              {                err = true;                msg.push(province_not