设计缺陷。滑动第一列数据,马上按确定按钮;这时bindcolumnchange事件还没有触发,第二列数据也就没有更新。
这时候得到的数据第一例选项值变了,第二列还是之前第一列对应的数据。
这一切原因都是picker 的bindchange(确定按钮事件) 在滑动未停止bindcolumnchange(滑动变化事件未触发)的情况下发生,
我通过延时取值来解决,结果确定按钮事件还阻止了滑动的事件。我加倒计时等候都不行!。
建议组件优化:1.应该必须在滑动停止后才能点击确定按钮。2.确定按钮事件不要阻止滑动事件的执行。
附带发下bug:遮罩层wx.showLoading没有挡住picker这个请修复。
提供的代码块,请先登录。一定要在手机上测试,开发工具手速是没那么快的。
左手滑动区,右手马上点击确定按钮。
在触发bindchange和bindcancel的时候重新对列range进行赋值,也就是说,此时即便像楼主那样点击确定导致bindcolumnchange函数没执行完,列对应错误了直接忽略,反正用户看不到....点击确定会触发bindchange事件,这种情况下针对所选择的value值重组对应列的数据range.等用户再点击多列选择器,呈现给用户的就是你又组好的正确数据了.
在这种情况下,我不得不说下这个组件的槽点满满,但是因为调用了系统的picker,所以滑动效果会很流畅.你在做小程序又不得不用这个,可能有人说你怎么不用别的库,说句真心话,渲染这种多列互动的滑动是真的卡,优化难度大,不如调用原生的流畅,原生的吧你看问题还多
楼主最后怎么解决的,我也碰到了这个问题。
请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。