小程序——单列和多列picker选择器(一)

参考资料:微信开放文档picker

一、解决问题:在未选择时展示引导内容,在下拉栏选择后显示选择内容

参考资料:小程序picker简单使用

在微信开放文档给的实例代码中未选择的时候显示为空白,但是在实际开发的过程中往往应当引导用户进行选择,比如显示:请选择。本篇就可以解决未选择为空白的问题。

1.效果图:

未选择时:
在这里插入图片描述
选择后:(会显示选择的内容)
在这里插入图片描述

2.代码示例(以其中一个为例)

附xml和js代码

xml

        <view class="accorder1_111">
          <picker bindchange="bindPickerChangetype" value="{{indextype}}" range="{{arraytype}}">
            <view class="accorder1_120">
              <view class="{{indextype!=-1?'on':''}}">
                {{indextype!=-1?indextype:"快递类型"}}
              </view>
            </view>
          </picker>
        </view>

js:

data:{
    arraytype: ["全部", "普通件", "急件", "专人代取"],
    indextype: -1,
    },
bindPickerChangetype: function (e) {
var that = this
console.log('picker发送选择改变,携带值为', this.data.arraytype[e.detail.value])
this.setData({
      indextype: this.data.arraytype[e.detail.value],
 	})
 }

先看下这个选择器的原理,再触发了绑定事件bindPickerChangetype以后对indextype 的值进行了改变,注意此时改变的是value="{{indextype}}"中的值(也就是要做到和value对应,否则会出现存储错误)

处理显示内容的时候利用三目运算符

              <view class="{{indextype!=-1?'on':''}}">
                {{indextype!=-1?indextype:"快递类型"}}
              </view>

最开始的时候在data中令indextype=-1(微信开放文档中没有这一项),并利用三木运算符进行判断,未选择的时候一定为-1,所以最开始(在我的例子中)会显示:快递类型。因为indextype的值我在bindPickerChangetype中进行了数组角标的处理所以选择的时候会显示为文本而不是数组角标的形式

当然,如果要为未选择时候的文字设置特殊的样式也可以用同样的方法

        <view class="accorder1_111">
          <picker bindchange="bindPickerChangetype" value="{{indextype}}" range="{{arraytype}}" >
            <view class="accorder1_120">
              <view class="{{indextype!=-1?'on':''}} style="{{indextype!=-1?'color:black':'color:#C0C0C0'}}">
                {{indextype!=-1?indextype:"快递类型"}}
              </view>
            </view>
          </picker>
        </view>

这样未选择的时候“快递类型”就会显示为灰色

3.多列选择器中的坑

data:{
	multiIndexto: [-1, -1]
}

在这里插入图片描述
这样写在开发者工具中会一直显示为未选择状态,笔者最开始担心角标存入错误的情况,比如说第二列可选择,第一列仍为未选择的情况(因为最开始的角标是-1),但是在手机中会使默认选择的情况在这里插入图片描述
所以不会出现存入为-1的情况

二、解决问题:存入值为文本值而不是角标

存入值为文本值而不是角标

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值