uni-app app端picker-view改变column刷新value问题

cbeh67ev  于 2021-11-27  发布在  Java
关注(0)|答案(0)|浏览(650)

存在情况

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

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题