微信小程序之利用vant-picker实现三级联动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序之利用vant-picker实现三级联动相关的知识,希望对你有一定的参考价值。
参考技术A 拟设计一个设备故障状况选择器,需要三级联动,第一级:设备大类;第二级:设备细类;第三级:故障描述,如下图:1、需要引入vant-picker,需要定制一个数组,包含三级即[一级,一级内容,子类[二级,二级内容,子类[三级,三级内容]]],如下图
2、在vant-picker的onChange事件中,对上面数组进行分级控制。
3、难点,需要把数组按三级拆分出来,放到picker的三列中,控制不好就会各种报错。
1、json,引入vant-picker
2、wxml
绑定change confirm 2个必须事件
3、js文件
3.1 定义选项内容,需要分成三级
3.2 data 中实现picker3列
3.3 onChange 事件实现
3.4 常见问题
3.4.1 最后一级如果没有内容,vant-picker会报错,所以需要做一个空判断,如果为空,赋值一个常量
3.4.2 是使用value,还是选择使用自己定义的常量,需要调试看。value值已经获取到了三列数据,但是容易出错。我最后还是选择使用原来定义常量proSelectList。
4.1 三级数据齐全的选择
4.2 第三级如果为空,第三列使用默认数据
小程序微信商品列表的左右联动
参考技术A先前看到网上不少大神写的demo,其菜单栏主要以 A,B,C,D等字母为主,即A,B,C,D等字母为对应该项携带的 id(id不能为汉字或纯数字)。而笔者现在写的项目菜单栏为汉字,所以需要改变数据格式,进而需要改变 wxml 中的循环嵌套和获取。以下为成型后效果,希望对读者有帮助。
实现该功能的思路:通过点击左侧滑栏的某一项,获取到该元素携带的 id ,然后动态传给右侧滑栏的 scroll-into-view ,从而实现右侧滑栏对应的该元素运动置顶。
以下为完整数据
数据格式:
/* pages/listers/listers.wxss /
/ pages/list-1/list-1.wxss */
/ 总体主盒子 /
.container
position: relative;
width: 100%;
height: 1220rpx;
background-color: #f0f4f7;
color: #939393;
/ 左侧栏主盒子 /
.nav_left
/ 设置行内块级元素(没使用定位) /
display: inline-block;
width: 100%;
height: 100%;
/ 主盒子设置背景色为灰色 /
background: #fff;
text-align: center;
/* position: fixed; /
left: 0;
top: 0;
border-top: 1rpx solid #dedede;
/ 左侧栏list的item /
.nav_left .nav_left_items
background: #fff;
/ 每个高30px /
height: 80rpx;
/ 垂直居中 /
line-height: 80rpx;
/ 再设上下padding增加高度,总高42px /
padding: 15rpx 0;
/ 只设下边线 /
border-bottom: 1px solid #dedede;
/ 文字14px /
font-size: 29rpx;
color: #101010;
font-weight:
/ 左侧栏list的item被选中时 /
.nav_left .nav_left_items.active
/ 背景色变成白色*/
background: #f0f4f7;
color: #ed1000;
/ 右侧栏主盒子 /
.scroll_right
/ 右侧盒子使用了绝对定位 /
position: fixed;
top: 0;
right: 0;
overflow: auto;
flex: 1;
/ 宽度75%,高度占满,并使用百分比布局 /
width: 75%;
height: 100%;
padding: 20rpx;
box-sizing: border-box;
background-color: #f0f4f7;
border-top: 1rpx solid #dedede;
.mink::after
display:block;content:\'\';clear:both;
.jiul,.jiul image
width: 100%;
height: 170rpx;
.minl
font-size: 29rpx;
color: #777;
text-align: left;
line-height: 60rpx;
float: left;
background: #f0f4f7;
width: 100%;
/* height: 50rpx; /
.mink
width: 100%;
background: #fff;
height: 100%;
/ 右侧栏list的item /
.nav_right_items
/ 浮动向左 /
float: left;
/ 每个item设置宽度是33.33% /
width: 50%;
/ height: 160rpx; /
text-align: center;
color: #4a4a4a;
background: #fff;
.nav_right_items image
/ 被图片设置宽高 /
width: 60px;
height: 50px;
margin-top: 15rpx;
.nav_right_items text
/ 给text设成块级元素 /
display: block;
margin-top: 5rpx;
margin-bottom: 10rpx;
font-size: 26rpx;
/ 设置文字溢出部分为... /
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
/ * 自定义其他点击态样式类 **/
.other-navigator-hover
background:#fff;
.scroll_left
width:25%;
height:100%;
background:#fff;
text-align:center;
position: fixed;
left: 0;top: 0
以上是关于微信小程序之利用vant-picker实现三级联动的主要内容,如果未能解决你的问题,请参考以下文章