小程序:picker-view选择器快速滚动,确认时,”值显示错误“

一、picker-view简介

嵌入页面的滚动选择器。其中只可放置 picker-view-column组件,其它节点不会显示。

二、问题描述:

技术选型:uniapp。

这里做选择的时候,

滑动到某一个角色,点击确定,页面的数据没有更新,停留在之前的一个选项。

三、找到原因:

picker内容还在滚动时或滚动回弹动画还未结束时,
点击确定,关闭弹出的picker,数据无法及时更新,需等待一下,或手动触停滚动再点确定。

四、解决问题:

@pickstart="pickstart" @pickend="pickend"

<view class="w-picker-view" v-if="mode=='selector'">
	<picker-view :indicator-style="itemHeight" @pickstart="pickstart" @pickend="pickend" :value="pickVal" @change="bindChange">
		<picker-view-column>
			<view class="w-picker-item" v-for="(item,index) in data" :key="index">{{item.label}}</view>
		</picker-view-column>
	</picker-view>
</view>
// 定义标记变量 isMoving 
pickstart() {
	this.isMoving = true;
},
pickend() {
	this.isMoving = false;
},
pickerConfirm(e){
	if (this.isMoving) {
		console.log('运动中,不能点击哦')
		return;
	}
}

经过测试问题成功解决。

五、欢迎交流指正,关注我,一起学习。

六、参考链接:

picker-view | 微信开放文档

uni.navigateTo(OBJECT) | uni-app官网

picker-view选择器快速滚动并确认时取值错误_bingo丶的博客-CSDN博客

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些参考代码。首先,您需要在wxml文件中添加picker-view组件,并在JavaScript代码中使用setData函数来更新选择器的内容。以下是代码示例: WXML文件: ``` <view class="container"> <picker-view indicator-style="height: 50px;" style="width: 100%; height: 300px;"> <picker-view-column> <view wx:for="{{yearList}}" wx:key="{{index}}">{{item}}</view> </picker-view-column> <picker-view-column> <view wx:for="{{monthList}}" wx:key="{{index}}">{{item}}</view> </picker-view-column> <picker-view-column> <view wx:for="{{dayList}}" wx:key="{{index}}">{{item}}</view> </picker-view-column> </picker-view> </view> ``` JavaScript文件: ``` Page({ data: { yearList: [], monthList: [], dayList: [], }, onLoad: function () { // 初始化年份选择器内容 var yearList = []; for (var i=1970; i<=2050; i++) { yearList.push(i); } this.setData({ yearList: yearList, }); // 初始化月份选择器内容 var monthList = []; for (var i=1; i<=12; i++) { monthList.push(i); } this.setData({ monthList: monthList, }); // 根据当前年月计算可选的日期 var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; this.updateDayList(year, month); }, bindChange: function (event) { // 更新日期选择器内容 var year = this.data.yearList[event.detail.value[0]]; var month = this.data.monthList[event.detail.value[1]]; this.updateDayList(year, month); }, updateDayList: function (year, month) { // 计算当前年月可以选择的日期 var dayList = []; var daysInMonth = new Date(year, month, 0).getDate(); for (var i=1; i<=daysInMonth; i++) { dayList.push(i); } this.setData({ dayList: dayList, }); }, }); ``` 在这个示例中,我们通过创建三个picker-view-column 选择器列,分别对应年、月、日,来实现一个日期选择器。当用户选择年份或月份,我们通过使用bindChange事件监听器来更新日选择器的选项。您可以根据需要进行修改和调整。希望这可以帮助到您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值