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

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

作者: 阿宅白石 | 来源:发表于2023-11-19 14:14 被阅读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;

    }

    预览效果如下:

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/yjcmwdtx.html