收藏
回答

bindtap 中 that.setData 无法赋值

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows v1.02 1904090

- 当前 Bug 的表现(可附上截图)

ty: default

tt:

- 预期表现

ty: warn

tt:  ok

- 复现路径


- 提供一个最简复现 Demo

js 程序片段

data: {


array: [

{ id: 0, unique: '独立', type:'default' },

{ id: 1, unique: '慢热', type: 'default'},

{ id: 2, unique: '坦率', type: 'default' },

{ id: 3, unique: '学霸', type: 'default' },

{ id: 4, unique: '学渣', type: 'default' },

{ id: 5, unique: '佛系少年', type: 'default'},

{ id: 6, unique: '积极上进', type: 'default'},

{ id: 7, unique: '阳光', type: 'default'},

{ id: 8, unique: '外冷内热', type: 'default'},

{ id: 9, unique: '勤奋', type: 'default' },

],

}


touch01 : function (e) {

var arr = this.data.array;

var ID = e.currentTarget.id;

var that=this;

arr.forEach(function (item, index) {

var ty = item.type;

if (index == ID) {

    that.setData({

        ty: 'warn',

    });

}

});

}


wxml 部分

<button size="mini" class="pay-hint-content1" wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName"   id="{{idx}}"  type="{{itemName.type}}" bindtap="touch01">

请教一下各位大神,我的array是一个字符串数据,每次点击事件发生后想要改变array.type 中相应数据,但bindtap 中that.setData 一直无效,请教大家知道这是怎么回事吗?

最后一次编辑于  07-13  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 鲤子
    鲤子
    07-13

    什么乱七八糟的。。

    setData修改的是data中的变量,会让视图重新渲染的。

    你修改个tt然后打印的时候请打印this.data里的tt。。

    补充下基础知识吧

    07-13
    赞同
    回复 5
    • L.I.B.
      L.I.B.
      07-13
      抱歉,我是个新手,基础是有点差,array 这个字符串数组确实是data 里面的,它的值在setData执行后没有改变
      07-13
      回复
    • 鲤子
      鲤子
      07-13回复L.I.B.

      先取到你点击的那个节点的信息

      e.currentTarget.id就是你数组的下标key

      let index = e.currentTarget.id

      this.setData({

          [`array[${index}].type`]: 'xxxxx'

      })

      07-13
      1
      回复
    • L.I.B.
      L.I.B.
      07-13回复鲤子
      我试了一下真的成功了!太感谢你了!!!
      07-13
      回复
    • L.I.B.
      L.I.B.
      07-13回复鲤子
      还是大神比较厉害,刚开始入门小程序开发这个问题困扰了我一上午了,谢谢谢谢!
      07-13
      回复
    • 烬
      07-13
      array是一个字符串数组,哈哈
      07-13
      回复
  • L.I.B.
    L.I.B.
    07-13


    输出结果如上图所示,ty, tt 中值并未改变

    07-13
    赞同
    回复
  • 铭锋科技
    铭锋科技
    07-13

    var ID = e.currentTarget.id;

    这个你打印下

    07-13
    赞同
    回复 1
    • L.I.B.
      L.I.B.
      07-13
      这是我点击按钮后获取的id值,打印结果为 ID 1,可以和arr中下标对应上
      07-13
      回复