收藏
回答

小程序bug 组件picker的bindchange事件选中value值不对


wxhm代码:

   

       当前选择:{{ceshi_array[ceshi_array_index]}}

   

   

<picker bindchange="bindPickerChange2" value="{{ceshi_array2_index}}" range="{{ceshi_array2}}">

   

       当前选择:{{ceshi_array2[ceshi_array2_index]}}

   


注:其实就是在官网文档复制的普通picker组件代码,只是更改过value和range的默认值


js代码:


Page({

   data: {

       ceshi_array: ['美国', '中国', '巴西', '日本'],

       ceshi_array_index: 0,

       ceshi_array2: ['美国2', '中国2', '巴西2', '日本2'],

       ceshi_array2_index: 0

   },

   bindPickerChange: function (e) {

       console.log('picker发送选择改变,携带值为', e.detail.value)

       this.setData({

           index: e.detail.value

       })

   },

   bindPickerChange2: function (e) {

       console.log('picker发送选择改变,携带值为', e.detail.value)

       this.setData({

           index: e.detail.value

       })

   },

})


也就是说当前页有多个组件普通picker时,每一个都选第二个,那么console.log出来的value值是 1,后面的无论多少个picker的value的值都是 0。

注:在操作滚动选项时,必须一次就滚动选项二,中间不可滚动失误、或者鼠标点一下,否则不会呈现这个bug。

       不过在手机上这个bug并没有呈现,仅限在微信开发工具上。

下面附带一张操作gif图




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

4 个回答

  • 工号 9527
    工号 9527
    2017-07-13

    谢谢反馈,已经定位到问题了,对你造成的困扰表示抱歉

    2017-07-13
    有用
    回复 4
    • 桜の花🌸
      桜の花🌸
      2020-04-07
      bindchange选中的日期,月和日获取到的数字为什么会少1,年份和时分秒是正常的。
      2020-04-07
      回复
    • 北冰暘
      北冰暘
      2020-08-12
      能帮忙看下我下面发的问题吗?谢谢
      2020-08-12
      回复
    • 易水
      易水
      2021-05-20
      这个是怎么解决的?
      2021-05-20
      回复
    • Lyinas
      Lyinas
      05-12
      你猜现在是几几年?我又为什么来到了这里?
      05-12
      回复
  • BadBadGentleman
    BadBadGentleman
    2022-08-16

    所有数据都需要setData 包括那个保存了索引的数组,

    2022-08-16
    有用
    回复
  • 北冰暘
    北冰暘
    2020-08-12

    <picker name="picker_hxvalue="{{pic_array[hx_index].id}}data-selecthx="{{pic_array[hx_index].name}}range="{{pic_array}}range-key="{{'name'}}"  bindchange="bindPickerChange_hx"  >

          <view class="pickerclass="picker">

            {{pic_array[hx_index].name}}

          </view>

        </picker>

    JS中

    data:

    pic_array: [

          { id: 13, name: '本科' },

          { id: 14, name: '大专' },

          { id: 15, name: '研究生' },

          { id: 16, name: '博士' },

          { id: 17, name: '高中' }

        ],

        hx_index: 0,

    改变事件:

      bindPickerChange_hx: function (e) {

        console.log('自定义值:', e.currentTarget.dataset.selecthx);

        console.log('picker发送选择改变,携带值为', e.detail.value);

        this.setData({

          hx_index: e.detail.value,

        })

       },


    我使用picker组件时,想要在change事件中同时获取到下拉框中的value值和自定义值,

    但是我输出的时候value值输出的是索引0,1,2 自定义值(就是下拉框选中的那个文本)每次获取的是上一次选中的,比如我选大专,e.currentTarget.dataset.selecthx 输出的确是本科,选研究生显示的是大专,可是查看Wxml源时data-selecthx显示的确是对的,value值也是数组中的id,而不是索引下标,这是什么原因呢,我要怎么获取到每次选中的id和name对应的值呢??



    2020-08-12
    有用
    回复 1
    • 沉默
      沉默
      2021-08-27
      请问解决了吗,我现在也遇到了这个问题
      2021-08-27
      回复
  • 🔥小松
    🔥小松
    2017-07-13

    谢谢

    2017-07-13
    有用
    回复
登录 后发表内容