2023uniapp中如何实现省市区选择功能

 所属分类:web前端开发

 浏览:180次-  评论: 0次-  更新时间:2023-07-12
描述:更多教程资料进入php教程获得。 uni-app是一款基于Vue.js的跨平台开发框架,我们常常在开发中需要实现省市区选择的功能。本文将介绍...
更多教程资料进入php教程获得。

uni-app是一款基于Vue.js的跨平台开发框架,我们常常在开发中需要实现省市区选择的功能。本文将介绍如何利用uni-app的一些组件和插件来实现省市区选择功能。

首先,我们需要准备一个省市区的数据源。常用的数据源可以是JSON文件或者从后台API获取。这里我们以JSON文件的方式来演示。

  1. 创建JSON文件
    我们创建一个data.json文件,用来存放省市区数据。内容如下:
{
  "provinceList": [
    {
      "name": "北京市",
      "cityList": [
        {
          "name": "北京市",
          "districtList": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区", "密云区", "延庆区"]
        }
      ]
    },
    {
      "name": "上海市",
      "cityList": [
        {
          "name": "上海市",
          "districtList": ["黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "浦东新区", "金山区", "松江区", "青浦区", "奉贤区", "崇明区"]
        }
      ]
    },
    {
      "name": "广东省",
      "cityList": [
        {
          "name": "广州市",
          "districtList": ["荔湾区", "越秀区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "增城区", "从化区"]
        },
        {
          "name": "深圳市",
          "districtList": ["罗湖区", "福田区", "南山区", "宝安区", "龙岗区", "盐田区", "龙华区", "坪山区", "光明区", "大鹏新区"]
        }
      ]
    }
  ]
}
  1. 页面结构
    我们在页面上创建一个省市区选择的表单,代码如下:
<template>
  <view>
    <form>
      <picker mode="selector" range="{{ province }}" bind:change="onProvinceChange">
        <view class="picker">
          {{ province[index1] }}
          <text class="iconfont icon-down"></text>
        </view>
      </picker>
      <picker mode="selector" range="{{ city }}" bind:change="onCityChange">
        <view class="picker">
          {{ city[index2] }}
          <text class="iconfont icon-down"></text>
        </view>
      </picker>
      <picker mode="selector" range="{{ district }}" bind:change="onDistrictChange">
        <view class="picker">
          {{ district[index3] }}
          <text class="iconfont icon-down"></text>
        </view>
      </picker>
    </form>
  </view>
</template>
  1. 页面逻辑
    我们在页面的JS文件中实现省市区数据的读取和选择的逻辑,代码如下:
<script>
  export default {
    data() {
      return {
        province: [],
        city: [],
        district: [],
        index1: 0,
        index2: 0,
        index3: 0
      }
    },
    methods: {
      onProvinceChange(e) {
        const index = e.detail.value;
        this.setData({
          province: this.data.provinceList.map(item => item.name),
          city: this.data.provinceList[index].cityList.map(item => item.name),
          district: this.data.provinceList[index].cityList[0].districtList,
          index1: index,
          index2: 0,
          index3: 0
        });
      },
      onCityChange(e) {
        const index = e.detail.value;
        this.setData({
          district: this.data.provinceList[this.data.index1].cityList[index].districtList,
          index2: index,
          index3: 0
        });
      },
      onDistrictChange(e) {
        const index = e.detail.value;
        this.setData({
          index3: index
        });
      }
    },
    created() {
      wx.request({
        url: '/data.json',
        success: res => {
          const { provinceList } = res.data;
          this.setData({
            province: provinceList.map(item => item.name),
            city: provinceList[0].cityList.map(item => item.name),
            district: provinceList[0].cityList[0].districtList
          });
        }
      });
    }
  }
</script>
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!