基于vue的三级联动select框

本文介绍如何在Vue项目中利用原生select元素实现省市区三级联动选择框,包括数据绑定、事件监听及数据回显的实现思路。

由于项目需要,ui又没有相似的插件,只能使用select原生完成一个select框,期间在于同事的帮忙完成,特来写一下实现思路。

1.由于项目原因,数据是放在了本地的json数据,我们先来看一下数据格式。

数据就是正常的父子集
在这里插入图片描述
在这里插入图片描述
就是正常的父子数据。

2.html页面

  <div>
    <select name="province" @change="getCity($event)" v-model="form.province">
      <option value disabled>请选择省/自治区/直辖市</option>
      <option v-for="(item,index) in city" :key="index" :value="item.value" :label="item.text"></option>
    </select>
    <select name="city2" @change="getDistrict($event)" v-model="form.district">
      <option value disabled>所在市(县)</option>
      <option v-for="(item,index) in city2" :key="index" :value="item.value" :label="item.text"></option>
    </select>
    <select name="district" @change="getDetail($event)" v-model="form.detail">
      <option value disabled>具体位置</option>
      <option
        v-for="(item,index) in city3"
        :key="index"
        :value="item.value"
        :lable="item.text"
      >{{item.text}}</option>
    </select>
    <input type="text" placeholder="请填写城区(乡)/街道/门牌号" />
  </div>

data上面的绑定:
在这里插入图片描述

2.1 通过import导入,并且把数据city挂载到data上面,通过v-for循环渲染,value值以及label标签内容
2.2 form表单分别通过v-model绑定省市区,
3.我的思路是通过change事件获取到当前的value值,然后循环整个数据,每一项的值与value做对比,如果有就把当前children数据取出来,依次类推获取到区的数据。

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191024163107532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NtYWxsaWNv,size_16,color_FFFFFF,t_70
在这里插入图片描述
最后在created钩子中用来回显数据,在这里插入图片描述

总结一下:

由于对于select的不熟悉,导致一刚开始没有绑定value值,而是直接在option标签之间渲染item.text,导致后期无法回显数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值