vue mint-ui 三级地址联动

我也是第一次写这种地址联动的css

刚开始的时候 我还觉得直接用select来写 后来公司的ios告知并非这样的html

他说应该时这样的vue

因而第一想法 赶忙找插件吧ios

可是找了一会未果  就问了公司大神 他刚开始更我讲了滴滴的一个插件git

可是不怎么好用 因而乎他又让我用了这个插件github

首先使用方法json

能够参考官网 http://mint-ui.github.io/#!/zh-cn 这里很少说了 由于下面还有不少内容数组

在一切准别就绪以后 你会发现官网上给的都很鸡肋 不多的东西ide

本身整理的思路时正确的  可是怎么实现 实在是想不起来函数

------------------------------------------------我是分界线--------------------------------------------

因而我开始 找度姨

首先你先找一个全国三级联动的地址json文件 

https://github.com/artiely/Administrative-divisions-of-China(里面包含二级联动数据,三级联动数据,四级联动数据等,找到本身须要的)

1、html组件

<div>
   <mt-picker :slots="myAddressSlots" @change="onMyAddressChange"> </mt-picker>
  <p>地址3级联动:{{myAddressProvince}} {{myAddressCity}} {{myAddresscounty}}</p>
</div>
2、组件方法
<script>
  import { Picker } from 'mint-ui';
  import myaddress from '../component/address3.json'
  export default {
    name: '',
    components: {
    'mt-picker': Picker
  },
  props: {},
  data () {
    return {
      isShowAddress:false,
      myAddressSlots: [
        {
          flex: 1,
          defaultIndex: 1,
          values: Object.keys(myaddress), //省份数组
          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'
        }
      ],
      myAddressProvince:'',
      myAddressCity:'',
      myAddresscounty:'',
    }
  },
  created() {
  },
  methods: {
    goBack (){
      this.$router.go(-1)
    },
    closeShowAddress (e){
      if(e.target == this.$refs.selectAddress){
        this.isShowAddress = !this.isShowAddress;
      }
    },
    onMyAddressChange(picker, values) {
      if(myaddress[values[0]]){ //这个判断相似于v-if的效果(能够不加,可是vue会报错,很不爽)
        picker.setSlotValues(1,Object.keys(myaddress[values[0]])); // Object.keys()会返回一个数组,当前省的数组
        picker.setSlotValues(2,myaddress[values[0]][values[1]]); // 区/县数据就是一个数组
        this.myAddressProvince = values[0];
        this.myAddressCity = values[1];
        this.myAddresscounty = values[2];
      }
    },
   },
  mounted(){
    this.$nextTick(() => { //vue里面所有加载好了再执行的函数 (相似于setTimeout)
      this.myAddressSlots[0].defaultIndex = 0
      // 这里的值须要和 data里面 defaultIndex 的值不同才可以初始化
      //由于我没有看过源码(我猜想是由于数据没有改变,不会触发更新)
    });
  }
}
</script>

 好了 帮你们整理好格式了 好看一点 真爱啊

对了 使用的时候注意一点 就是你的address.json 我刚开始复制这个的时候一直把这个json外部写一个【】

而后一直不出来汉字 只有第一列是数字 而后以为本身好白痴

反正你把这些写上去就会有上图的效果了

——————————————补充——————————————

还有一些朋友不太明白我写的,出现了各类问题,我刚才又整理了一遍。再详细一些(我只能这样了)。

别忘记引入mint-ui的文件(但愿你们学会看文档鸭~)

<link rel="stylesheet" href="https://unpkg.com/mint-ui/lib/style.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/mint-ui/lib/index.js"></script>
 
有的人出现的问题是由于address.json文件的问题,其实人家已经把下载地址写在上面了 ,为啥木有人看捏 (哭死啊)
我这里把三级联动的文件发出来吧 因为文章已经很长了 我会单独写一篇文章  有须要的直接复制就能够了
唉呀妈呀 当仙女可真累啊
三级联动json文件地址:https://www.cnblogs.com/WoAiZmm/p/10001426.html
格式本身整理吧(蜜汁微笑)
相关文章
相关标签/搜索