之前做过一个picker的三级联动功能,这里分享代码给大家

具体代码:

// An highlighted block
<template>
<view>
<picker mode="multiSelector" @change="bindMultiPickerChange" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray">
<view class="picker" style="display: flex;justify-content:space-around;align-items:center;width: 100%;flex: 1">
<view class="energy">
{{ areaname }}
<uni-icons :size="40" class="uni-icon-wrapper" color="#e0e0e0" type="arrowdown" />
</view>
<view style="background-color: #50a0d1;height: 50rpx;width: 1px;opacity: 0.5"></view>
<view class="energy">
{{ buildingname }}
<uni-icons :size="40" class="uni-icon-wrapper" color="#e0e0e0" type="arrowdown" />
</view>
<view style="background-color: #50a0d1;height: 50rpx;width: 1px;opacity: 0.5"></view>
<view class="energy">
{{ floorname }}
<uni-icons :size="40" class="uni-icon-wrapper" color="#e0e0e0" type="arrowdown" />
</view>
</view>
</picker>
</view>
</template> <script>
import Vue from 'vue';
export default {
data() {
return {
multiArray: [['1', '2', '3', '4', '5', '6', '7'], ['1舍', '2舍', '3舍', '4舍'], ['111楼', '112楼', '113楼', '114楼']],
multiIndex: [0, 0, 0],
tabindex: 0,
ydindex: 0,
firstid: '0',
secondid: '0',
thirdid: '0',
areaname: '1',
dengswitchvalue: '',
ktswitchvalue: '',
buildingname: '1舍',
floorname: '111楼',
nowitem: '1-1舍-111楼',
column1data: [
//每个院部的楼栋
['11舍', '12舍', '13舍', '14舍'],
// ['21舍', '22舍', '23舍', '24舍'],
['21舍'],
// ['31舍', '32舍', '33舍', '34舍'],
['31舍', '32舍'],
['41舍', '42舍', '43舍', '44舍'],
['51舍', '52舍', '53舍', '54舍'],
['61舍', '62舍', '63舍', '64舍'],
['71舍', '72舍', '73舍', '74舍']
],
hangdata: [
//每一栋包含楼层
[['111楼', '112楼', '113楼', '114楼'], ['121楼', '122楼', '123楼'], ['131楼', '132楼', '133楼', '134楼'], ['141楼', '142楼', '143楼', '144楼']],
// [['211楼', '212楼', '213楼', '214楼'], ['221楼', '222楼', '223楼', '224楼'], ['231楼', '232楼', '233楼', '234楼'], ['241楼', '242楼', '243楼', '244楼']],
[['211楼', '212楼', '213楼', '214楼']],
// [['311楼', '312楼', '313楼', '314楼'], ['321楼', '322楼', '323楼', '324楼'], ['331楼', '332楼', '333楼', '334楼'], ['341楼', '342楼', '343楼', '344楼']],
[['311楼', '312楼', '313楼', '314楼'], ['321楼', '322楼', '323楼']],
[['411楼', '412楼', '413楼', '414楼'], ['421楼', '422楼', '423楼', '424楼'], ['431楼', '432楼', '433楼', '434楼'], ['441楼', '442楼', '443楼', '444楼']],
[['511楼', '512楼', '513楼', '514楼'], ['521楼', '522楼', '523楼'], ['531楼', '532楼', '533楼', '534楼'], ['541楼', '542楼', '543楼', '544楼']],
[['611楼', '612楼', '613楼', '614楼'], ['621楼', '622楼', '623楼', '624楼'], ['631楼', '632楼', '633楼', '634楼'], ['641楼', '642楼', '643楼', '654楼']],
[['711楼', '712楼'], ['721楼', '722楼', '723楼'], ['731楼', '732楼', '733楼', '734楼'], ['741楼', '742楼', '743楼', '744楼']]
]
};
},
methods: {
bindMultiPickerChange(e) {
this.multiIndex = e.detail.value;
this.areaname = this.multiArray[0][e.detail.value[0]];
this.buildingname = this.multiArray[1][e.detail.value[1]];
this.floorname = this.multiArray[2][e.detail.value[2]]; this.nowitem = this.multiArray[0][e.detail.value[0]] + '-' + this.multiArray[1][e.detail.value[1]] + '-' + this.multiArray[2][e.detail.value[2]];
console.log('选择了:' + this.nowitem);
},
bindMultiPickerColumnChange(e) {
switch (e.detail.column) {
case 0:
this.firstid = e.detail.value;
if (typeof this.hangdata[this.firstid][this.secondid] == 'undefined') {
this.secondid = 0; //当第二列数据没有上一个second列的情况
}
switch (e.detail.value) {
case this.firstid:
Vue.set(this.multiArray, 1, this.column1data[this.firstid]);
Vue.set(this.multiArray, 2, this.hangdata[this.firstid][this.secondid]); //为了对应第三列关系
break;
default:
break;
}
break;
case 1:
this.secondid = e.detail.value;
if (typeof this.hangdata[this.firstid][this.secondid][this.thirdid] == 'undefined') {
this.thirdid = 0; //当第三列数据没有上一个列的情况
}
switch (this.firstid) {
case this.firstid:
switch (this.secondid) {
case this.secondid:
Vue.set(this.multiArray, 2, this.hangdata[this.firstid][this.secondid]);
break;
default:
break;
}
break;
default:
break;
}
case 2:
this.thirdid = e.detail.value;
break;
default:
break;
}
}
}
};
</script> <style lang="less"></style>

  

uni-app 微信小程序 picker 三级联动的更多相关文章

  1. 微信小程序---自定义三级联动

    在开发的很多电商类型的项目中,免不了会遇到三级联动选择地址信息,如果单纯的使用文本框给用户选择,用户体检可能就会差很多.今天我给大家整理了关于小程序开发利用picker-view组件和animatio ...

  2. 微信小程序 实现三级联动-省市区

    github项目地址   https://github.com/z1511676208/chooseAddr 序:项目中需要用到三级联动,自己试着写了下,也查了一些资料,现在把这个记录一下,里面地区数 ...

  3. NO--14 微信小程序,左右联动二

    上一篇讲解了左=>右联动,那个还比较简单,本篇写剩下比较核心的部分,也是本次开发过程中遇到最难的部分,右=>左联动,先简单看一下演示   右左联动.gif 一.关键技术: (1) 小程序 ...

  4. 微信小程序picker组件两列关联使用方式

    在使用微信小程序picker组件时候,可以设置属性   mode = multiSelector   意为多列选择,关联选择,当第一列发生改变时侯,第二列甚至第三列发生相应的改变.但是官方文档上给的只 ...

  5. mpvue + 微信小程序 picker 实现自定义多级联动 超简洁

    微信小程序官网只提供了省市区的三级联动,实际开发中更多的是自定义的多级联动: 依照微信小程序官网提供的自定义多级联动,需要使用到picker 的多列选择器,即设置 mode = multiSelect ...

  6. NO--13微信小程序,左右联动

    写在前面: 从2016年张小龙发布微信小程序这种新的形态,到2017年小程序的不温不火,再到今年小程序的大爆发,从一度刷爆朋友圈的‘头脑王者’,再到春节聚会坐在一起的火爆小游戏“跳一跳",都 ...

  7. 微信小程序picker重写,精确到时分秒

    https://developers.weixin.qq.com/miniprogram/dev/component/picker.html 微信小程序提供的picker组件,只精确到分,项目中需要秒 ...

  8. 微信小程序picker组件关于objectArray数据类型绑定

    一.前言: 我发现很多的同学都在抱怨说微信小程序的picker的mode = selector/mode = multiSelector 无法实现Object Array数据类型的绑定,其实很多人就想 ...

  9. 微信小程序——picker通过value返回你想获取的值

    关于微信小程序中的picker使用方法可以访问:picker-小程序 从它的官方文档中,可以看出它返回的value值是它range的下标: 在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的 ...

随机推荐

  1. CTF-源码泄露-PHP备份文件的两种格式

    参考大佬文章: https://www.cnblogs.com/yunqian2017/p/11515443.html https://blog.csdn.net/xy_sunny/article/d ...

  2. SpringBoot执行原理

    目录 [Toc] 一.执行原理: 每个Spring Boot项目都有一个主程序启动类,在主程序启动类中有一个启动项目的main()方法, 在该方法中通过执行SpringApplication.run( ...

  3. Synchronized用法原理和锁优化升级过程(面试)

    简介 多线程一直是面试中的重点和难点,无论你现在处于啥级别段位,对synchronized关键字的学习避免不了,这是我的心得体会.下面咱们以面试的思维来对synchronized做一个系统的描述,如果 ...

  4. Python循环列表的方法

    python循环列表的几种方法: 第一,依次打印列表中的各项值. 1 #!usr/bin/env python3 2 #!-*- Coding:utf-8 -*- 3 4 ''' 5 多种循环列表的方 ...

  5. iOS音乐电台类项目开发

    1.技术难度不是太大,代码大致如下 2.用到的一些第三方 ZFProgressView,pageController,RESideMenu,MJRefresh,MBProgressHUD,RNFros ...

  6. Asp.net Core3.1+Vue 使用SignalR推送数据

    本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...

  7. IDEA 使用Git clone项目【建议】

    1.在启动页点击Get from Version Control进行克隆,这样可以减少不必要克隆Bug. 2.项目目录保持一致(保证文件的正确性),父级目录不要有其它任何文件(防止文件名冲突) 3.通 ...

  8. jQuery 库中的 $() 是什么?

    概述: $() 函数是 jQuery() 函数的别称. $() 函数用于将任何对象包裹成 jQuery 对象,接着就被允许调用定义在 jQuery 对象上的多个不同方法. 可以将一个选择器字符串传入 ...

  9. Java学习日报7.18

    /** * *//** * @author 86152 * */ package trangle;import java.util.Scanner; public class Trangle{ pub ...

  10. C#设计模式——建造者模式(Builder Pattern)

    1.建造者模式简介 1.1>.定义 建造者模式(Builder)将复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. 1.2>.使用频率  中低 1.3>.原型模式应用 ...