《微信小程序开发从入门到实战》学习二十一

2023-11-19  本文已影响0人  阿宅白石

3.3 开发创建投票页面

3.3.9 使用picker选择器组件

使用picker选择器组件增加一个设置截止时间的功能。picker是一个从底部弹出的滚动选择器组件。picker通用属性如下:

mode                选择器类型(selector、multiSelector、time、date、region)

disabled            是否禁用

bindcancel        取消选择时触发的事件处理函数

不同的选择器组件会有一些额外的属性。

当mode为selector时,额外属性如下:

range                可选内容,当mode为selector或multiselector时,range有效

range-key        当range为Object Array时,通过range-key来指定Obejct中key值作为选择器显示内容

value                表示选择了range中的第几个

bindchange       value改变时触发的事件处理函数

当mode为time时,额外属性如下:

value                选择的时间,格式为hh:mm

start                  有效时间范围的开始,格式为hh:mm

end                   有效时间范围的结束,格式为hh:mm

bindchange       value改变时触发的事件处理函数

当mode为date时,额外属性如下:

value                选择的日期,格式为YYYY-MM-DD

start                  有效日期范围的开始,格式为YYYY-MM-DD

end                   有效日期范围的结束,格式为YYYY-MM-DD

fields                 选择器的粒度,有效值year、month、day

bindchange       value改变时触发的事件处理函数

当mode为regin时,额外属性如下:

value                选中的省市区,默认选中每一列的第一个值

custom-item     可为每一列的顶部添加一个自定义的项

bindchange       value改变时触发的事件处理函数,event参数中还可以拿到区域的邮政编码和统计用区划代码

使用picker选择器组件的日期为投票增加一个设置截止时间的功能。

首先在wxml文件的“添加选项”按钮的下方增加如下代码:

    <view class="form-item">

      <text class="form-item-label">截止日期</text>

      <picker class="form-item-picker" mode="date" value="{{endDate}}" start="{{nowDate}}" bindchange="onChangeEndDate">{{endDate}}</picker>

    </view>

接下来在JS文件增加需要的逻辑层数据nowDate、endDate,代码如下:

  data: {

    formTitle: '',

    formDesc: '',

    optionList: [],

    nowDate: '',

    endDate: ''

  }

这两个变量需要动态生成,最好在页面显示前生成,因此在生命周期函数onLoad函数去生成,代码如下:

  onLoad(options) {

    const now = new Date() 

    const nowYear = now.getFullYear() 

    const nowMonth = now.getMonth() + 1 //月份特殊,0~11表示1~12月,因此+1

    const nowDay = now.getDate()

    const nowDate = nowYear + 

    '-' + 

    ((nowMonth < 10)?('0' + nowMonth):nowMonth) + //月份如果是单个数字,前面补0

    '-' + 

    ((nowDay < 10)?('0' + nowDay):nowDay)

    //修改data对象中的nowDate和endDate数据

    this.setData({

      nowDate, // 等价于 nowDate:nowDate,由于 key与 value相同,可以简写

      endDate: nowDate

    })

  },

为picker选择器组件增加一个value改变的事件处理函数,代码如下:

  onChangeEndDate(e){

    this.setData({

      endDate: e.detail.value

    })

  },

在wxss文件中为新加入的组件增加样式。代码如下:

.form-item {

  display: flex;

  justify-content: space-between;

  align-items: center;

  border-bottom: 1rpx solid #eee;

  padding: 20rpx 0;

}

.form-item-label {

  font-size: 12pt;

  color:#333;

}

.form-item-picker {

  font-size: 12pt;

  color:#999;

}

预览效果如下:

上一篇下一篇

猜你喜欢

热点阅读