收藏
回答

picker的确定事件终止了列改变时触发事件,导致数据没更新

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug picker 微信安卓客户端 version 8.0.6 2.18.0

设计缺陷。滑动第一列数据,马上按确定按钮;这时bindcolumnchange事件还没有触发,第二列数据也就没有更新。

这时候得到的数据第一例选项值变了,第二列还是之前第一列对应的数据。

这一切原因都是picker 的bindchange(确定按钮事件) 在滑动未停止bindcolumnchange(滑动变化事件未触发)的情况下发生,

我通过延时取值来解决,结果确定按钮事件还阻止了滑动的事件。我加倒计时等候都不行!。

建议组件优化:1.应该必须在滑动停止后才能点击确定按钮。2.确定按钮事件不要阻止滑动事件的执行。

附带发下bug:遮罩层wx.showLoading没有挡住picker这个请修复

提供的代码块,请先登录。一定要在手机上测试,开发工具手速是没那么快的。

左手滑动区,右手马上点击确定按钮。





最后一次编辑于  2021-07-02
回答关注问题邀请回答
收藏

3 个回答

  • 執筆畫盡紅塵淚
    執筆畫盡紅塵淚
    2021-09-08

    在触发bindchangebindcancel的时候重新对列range进行赋值,也就是说,此时即便像楼主那样点击确定导致bindcolumnchange函数没执行完,列对应错误了直接忽略,反正用户看不到....点击确定会触发bindchange事件,这种情况下针对所选择的value值重组对应列的数据range.等用户再点击多列选择器,呈现给用户的就是你又组好的正确数据了.

    在这种情况下,我不得不说下这个组件的槽点满满,但是因为调用了系统的picker,所以滑动效果会很流畅.你在做小程序又不得不用这个,可能有人说你怎么不用别的库,说句真心话,渲染这种多列互动的滑动是真的卡,优化难度大,不如调用原生的流畅,原生的吧你看问题还多

    2021-09-08
    有用 1
    回复 2
    • kang
      kang
      2022-06-15
      老哥能不能搞点代码截图,或者代码块,你们说的是picker还是picker-view?
      2022-06-15
      回复
    • kang
      kang
      2022-06-15
      重新赋值也会导致数据错误
      2022-06-15
      回复
  • 小科
    小科
    2021-08-03

    楼主最后怎么解决的,我也碰到了这个问题。

    2021-08-03
    有用
    回复 1
    • 執筆畫盡紅塵淚
      執筆畫盡紅塵淚
      2021-09-08
      我提供了一个解决办法,详情见3楼
      2021-09-08
      回复
  • Cjiang
    Cjiang
    2021-06-30

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2021-06-30
    有用
    回复 5
    • F
      F
      2021-07-01
      更新了代码片段,不知道你们能不能用,
      2021-07-01
      回复
    • Cjiang
      Cjiang
      2021-07-02回复F
      用不了 有报错
      2021-07-02
      回复
    • F
      F
      2021-07-02回复Cjiang
      我更新了代码块,这次肯定可以了
      2021-07-02
      回复
    • Cjiang
      Cjiang
      2021-07-08回复F
      picker 需要 对应项停止了 可以拿到他的数据,确保滑动后已经停止了
      2021-07-08
      回复
    • 小科
      小科
      2021-08-03回复Cjiang
      我也碰到了这个问题,用户稍微手快点,点确定bindcolumnchange就触发不了,导致看起就像bug 体验非常不好
      2021-08-03
      1
      回复
登录 后发表内容