Home Web Front-end uni-app How to implement province and city selection function in uniapp

How to implement province and city selection function in uniapp

Jul 04, 2023 am 09:09 AM
uniapp Province City District Select function

uni-app is a cross-platform development framework based on Vue.js. We often need to implement the function of selecting provinces and cities during development. This article will introduce how to use some components and plug-ins of uni-app to realize the province and city selection function.

First, we need to prepare a data source for provinces and cities. Commonly used data sources can be JSON files or obtained from backend APIs. Here we demonstrate it in the form of a JSON file.

  1. Create JSON file
    We create a data.json file to store province and city data. The content is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

{

  "provinceList": [

    {

      "name": "北京市",

      "cityList": [

        {

          "name": "北京市",

          "districtList": ["东城区", "西城区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "怀柔区", "平谷区", "密云区", "延庆区"]

        }

      ]

    },

    {

      "name": "上海市",

      "cityList": [

        {

          "name": "上海市",

          "districtList": ["黄浦区", "徐汇区", "长宁区", "静安区", "普陀区", "虹口区", "杨浦区", "闵行区", "宝山区", "嘉定区", "浦东新区", "金山区", "松江区", "青浦区", "奉贤区", "崇明区"]

        }

      ]

    },

    {

      "name": "广东省",

      "cityList": [

        {

          "name": "广州市",

          "districtList": ["荔湾区", "越秀区", "海珠区", "天河区", "白云区", "黄埔区", "番禺区", "花都区", "南沙区", "增城区", "从化区"]

        },

        {

          "name": "深圳市",

          "districtList": ["罗湖区", "福田区", "南山区", "宝安区", "龙岗区", "盐田区", "龙华区", "坪山区", "光明区", "大鹏新区"]

        }

      ]

    }

  ]

}

Copy after login
  1. Page structure
    We create a province and city selection form on the page, the code is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<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>

Copy after login
  1. Page logic
    We implement the logic of reading and selecting province and city data in the JS file of the page. The code is as follows:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

<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>

Copy after login

The above is how to realize province and city selection through uni-app Sample code for the function. By using the picker component of uni-app, we can dynamically update the city and district options based on the selected province. Use wx.request to request the data source in the JS file of the page, and then dynamically update the city and district options based on the selected province.

Hope this example can help you implement the function of selecting provinces and cities in uni-app. Of course, in actual development, you may need to make changes and optimizations according to your own needs. I hope this article can provide you with some ideas and help.

The above is the detailed content of How to implement province and city selection function in uniapp. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to start preview of uniapp project developed by webstorm How to start preview of uniapp project developed by webstorm Apr 08, 2024 pm 06:42 PM

How to start preview of uniapp project developed by webstorm

Which one is better, uniapp or mui? Which one is better, uniapp or mui? Apr 06, 2024 am 05:18 AM

Which one is better, uniapp or mui?

What development tools do uniapp use? What development tools do uniapp use? Apr 06, 2024 am 04:27 AM

What development tools do uniapp use?

What basics are needed to learn uniapp? What basics are needed to learn uniapp? Apr 06, 2024 am 04:45 AM

What basics are needed to learn uniapp?

What are the disadvantages of uniapp What are the disadvantages of uniapp Apr 06, 2024 am 04:06 AM

What are the disadvantages of uniapp

Which is better, uniapp or native development? Which is better, uniapp or native development? Apr 06, 2024 am 05:06 AM

Which is better, uniapp or native development?

In-depth comparison between Flutter and uniapp: explore their similarities, differences and characteristics In-depth comparison between Flutter and uniapp: explore their similarities, differences and characteristics Dec 23, 2023 pm 02:16 PM

In-depth comparison between Flutter and uniapp: explore their similarities, differences and characteristics

What component library does uniapp use to develop small programs? What component library does uniapp use to develop small programs? Apr 06, 2024 am 03:54 AM

What component library does uniapp use to develop small programs?

See all articles