多个Picker之间会互相影响
发布于 6 年前 作者 yangtao 1590 次浏览 来自 问答

在一个页面上布置两个picker,当将其中一个的选项改变为不是默认的值的后,点击两外一个picker,弹出选项窗口中的默认值也会随着前面的那个picker的索引而改变

<picker range="{{modeList}}" value="{{modeIndex}}" bindchange=“changeMode”>

                <button class=“weui-btn mini-btn” size=“mini” type=“primary” plain=“true”>

                  {{modeList[modeIndex]}}

                </button>

              </picker>

              <picker range="{{ownerList}}" value="{{ownerIndex}}" bindchange=“changeOwner”>

                <button class=“weui-btn mini-btn” size=“mini” type=“primary” plain=“true”>

                  {{ownerList[ownerIndex]}}

                </button>

              </picker>

6 回复

这的确是一个bug  我也出现了这个问题

页面上多个picker 时就有这样的问题

怀疑是===多个picker引用同一个下弹窗 , 导致下弹窗只记录最后一次的 index位置引起  希望官方解决该bug

至少考虑多个picker的情况

小程序的设计者真TM脑残!每个picker要一个索引变量和名不同功能相同的绑定方法。什么叫代码重用!

我也遇到这个问题了 搞了半天 动态生成的几个picker之间下标有时会出现互相影响的问题 不知道官方什么时候能解决啊

解决了吗sos

下面是js里的脚本,我检查了几遍感觉没什么问题。

Page({

  data: {

    modeList: [‘分组模式’, ‘列表模式’],

    modeIndex: 0,

    ownerList: [‘我的’, ‘全部’],

    ownerIndex: 0,

  },

onLoad: function (options) {

    // 页面初始化 options为页面跳转所带来的参数

},

changeMode: function (e) {

    this.setData({

      modeIndex: e.detail.value

    });

  },

  changeOwner: function (e) {

    this.setData({

      ownerIndex: e.detail.value

    });

  }

})

默认情况下是“分组模式”(modeIndex=0)和“我的”(ownerIndex=0)

第一个组件选择为“列表模式”(modeIndex=1),这时选择第二个组件,弹出的面板里标记为选中的是“全部”(ownerIndex=1的时候才是“全部”),这时的ownerIndex的值还是0,所以弹出面板中标记为选中的应该是“我的”。

不知道问题出在哪里?

你看我发表的,我已经提交bug

回到顶部