Maison >interface Web >uni-app >Utilisez uniapp pour obtenir des effets de sélecteur de liaison à plusieurs niveaux
Utilisez Uniapp pour obtenir un effet de sélecteur de liaison à plusieurs niveaux
1. Introduction
Le sélecteur de liaison à plusieurs niveaux est un effet interactif courant qui peut être observé dans de nombreux scénarios d'application. Dans Uniapp, nous pouvons facilement obtenir cet effet en utilisant les composants et les API qu'il fournit. Cet article explique comment utiliser Uniapp pour implémenter des sélecteurs de liaison à plusieurs niveaux et fournit des exemples de code spécifiques.
2. Préparation
Avant de commencer la mise en œuvre, nous devons préparer le travail suivant :
3. Étapes de mise en œuvre
Par exemple, nous créons une source de données de province et de ville :
const data = [ { name: '北京市', children: [ { name: '东城区', children: [ { name: '东华门街道' }, { name: '东四街道' } ] }, { name: '西城区', children: [ { name: '西单街道' }, { name: '西直门街道' } ] } ] }, { name: '上海市', children: [ { name: '黄浦区', children: [ { name: '外滩街道' }, { name: '南京东路街道' } ] }, { name: '徐汇区', children: [ { name: '徐家汇街道' }, { name: '田林街道' } ] } ] } ];
index
dans le répertoire pages
, et écrivez la structure et le style de la page dans le fichier index.vue
. pages
目录下创建一个名为index
的页面,在index.vue
文件中编写页面结构和样式。<template> <view class="container"> <!-- 一级选择器 --> <picker mode="selector" :range="{{provinceList}}" bindchange="handleProvinceChange" :value="provinceIndex"> <view class="picker-block"> <text>请选择省份</text> <text>{{provinceName}}</text> <!-- 显示选择的省份 --> </view> </picker> <!-- 二级选择器 --> <picker mode="selector" :range="{{cityList}}" bindchange="handleCityChange" :value="cityIndex"> <view class="picker-block"> <text>请选择城市</text> <text>{{cityName}}</text> <!-- 显示选择的城市 --> </view> </picker> <!-- 三级选择器 --> <picker mode="selector" :range="{{districtList}}" bindchange="handleDistrictChange" :value="districtIndex"> <view class="picker-block"> <text>请选择区县</text> <text>{{districtName}}</text> <!-- 显示选择的区县 --> </view> </picker> </view> </template> <style> .container { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } .picker-block { margin-bottom: 20px; } </style>
picker
组件的bindchange
事件来监听选择器的变化,并执行相应的逻辑。在index.vue
<script> export default { data() { return { provinceList: [], provinceIndex: 0, provinceName: "", cityList: [], cityIndex: 0, cityName: "", districtList: [], districtIndex: 0, districtName: "" }; }, mounted() { this.initData(); }, methods: { initData() { // 初始化省份列表 this.provinceList = data.map(item => item.name); // 初始化城市列表 this.handleProvinceChange({ detail: { value: this.provinceIndex } }); }, handleProvinceChange(e) { const index = e.detail.value; this.provinceIndex = index; this.provinceName = this.provinceList[index]; // 根据选择的省份,初始化城市列表 const cityData = data[index].children; this.cityList = cityData.map(city => city.name); // 初始化区县列表 this.handleCityChange({ detail: { value: this.cityIndex } }); }, handleCityChange(e) { const index = e.detail.value; this.cityIndex = index; this.cityName = this.cityList[index]; // 根据选择的城市,初始化区县列表 const districtData = data[this.provinceIndex].children[index].children; this.districtList = districtData.map(district => district.name); // 初始化选中的区县 this.handleDistrictChange({ detail: { value: this.districtIndex } }); }, handleDistrictChange(e) { const index = e.detail.value; this.districtIndex = index; this.districtName = this.districtList[index]; } } }; </script>
Implémenter le traitement des événements du sélecteur
Dans Uniapp, nous pouvons utiliser l'événement bindchange
du composant picker
pour écouter le le sélecteur change et exécute la logique correspondante.
Ajoutez le code suivant dans le fichier index.vue
:
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!