uniapp在picker内容还在滚动时或滚动回弹动画还未结束时,点确定关闭弹出的picker,数据无法及时更新。
官方回复是:需等待一下,或手动触停滚动再点确定。所有平台均如此
解决方案:picker-view
修改 picker 成:picker-view (样式要自己写)
<template>
<view class="uni-list-cell-db">
<button @click="changeBox" type="default">点击选择: {{arr[val[0]]}}</button>
// 如果滚动中关闭,要获取 关闭前最后用一次值,则将代码里 v-show="visible" 改成:v-if="visible"
// 当前模式 是关闭后,仍要获取最终滚动值
<view v-show="visible">
<picker-view :value="val" @pickend="pickend" @pickstart="pickstart" @change="bindChange" class="picker-view">
<picker-view-column>
<view class="item" v-for="(item,index) in arr" :key="index">{{item}}</view>
</picker-view-column>
</picker-view>
<button @click="changeBox" type="default">确定</button>
</view>
</view>
</template>
<script>
let arr = [];
for (var i = 0; i < 100; i++) {
arr.push(i)
}
export default {
data() {
return {
arr,
val: [],
visible: false,
}
},
methods: {
changeBox() {
this.visible = !this.visible
},
bindChange: function(e) {
console.log('索引:' + e.target.value)
this.val = e.target.value;
// ...
}
}
}
</script>
<style>
button {
margin: 0 30rpx;
}
.picker-view {
width: 100vw;
height: 600rpx;
margin-top: 200rpx;
}
.item {
text-align: center;
}
</style>
效果:
温馨提示:
如果滚动中关闭,要获取 关闭前最后用一次值,则将代码里 v-show=“visible” 改成:v-if=“visible”
模拟 picker 样式:定位,背景,确定取消,自己写。
picker-view中:仅微信小程序2.3.1+、快手小程序 支持
@pickstart 当滚动选择开始时候触发事件
@pickend 当滚动选择结束时候触发事件
到处~~ 完结,有问题私我或者留言