存在情况
nvue页面,app端(已测试iOS),存在多个column时,比如两个,将第二个column拉至底部最后一个,然后改变第一个column,第二个column的长度发生变化,但是返回来的value的索引值会一直保持第一次最底部的那个索引值,不会发生更新。
在mp-weixin上面测试了,第二个column的长度改变时,会触发两次change,保证索引是正确的。但是app端一直不变。app端需要自己判断是不是到底了,然后有没有那么长,然后重新设置picker-view的value值。
代码
<picker-view :value="pickVal" @change="bindChange" style="height: 300rpx;flex-direction: row;" indicator-style="height:100rpx;">
<picker-view-column>
<view style="height: 100rpx;justify-content: center;align-items: center;" v-for="(item,idx) in items.months" :key="idx">
<text>{{item}}</text>
</view>
</picker-view-column>
<picker-view-column>
<view style="height: 100rpx;flex-direction: row; justify-content: center;align-items: center;" v-for="(item,idx) in items.days" :key="idx">
<text>{{item}}</text>
</view>
</picker-view-column>
</picker-view>
pickVal: [0,0],
items: {
months: [1,2,3,4],
days: [1,2,3,4,5,6]
}
bindChange(val) {
console.log(val.detail.value)
const arr = val.detail.value
const a1 = arr[0]
if (a1 === 0) {
this.items.days = [1,2,3,4,5,6]
} else if (a1 === 1) {
this.items.days = [1,2,3]
} else if (a1 === 2) {
this.items.days = [1,2,3,4,5]
} else if (a1 === 3) {
this.items.days = [1,2,3,4,5,6]
}
// this.pickVal = arr
}
结果
iOS-app
[0,5] at pages/tabs/discovery.vue:89
18:17:26.015 [LOG] : [Object] [1,5] at pages/tabs/discovery.vue:89
18:17:29.028 [LOG] : [Object] [2,5] at pages/tabs/discovery.vue:89
18:17:32.029 [LOG] : [Object] [3,5] at pages/tabs/discovery.vue:89
mp-wx
解决办法
自己判断是不是实际value与返回的value一致,不一致的必须需要重制value来保证再次触发change
暂无答案!
目前还没有任何答案,快来回答吧!