收藏
回答

setdata修改数组对象中的一个对象的某个字段,现在不支持了吗?

array:[{
text:'123',
checked:false,
disabled:false
},{
text:'123',
checked:false,
disabled:false
},{
text:'123',
checked:false,
disabled:false
},{
text:'123',
checked:false,
disabled:false
}]
this.setData({
['array[1].check']:true
})
let key = 'array[' + 1 + '].checked'
    this.setData({
      [key]: true
    })

都不生效,求大神帮忙看看

最后一次编辑于  03-12  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • iHealth 王深镇
    iHealth 王深镇
    03-12

    官方文档只说可以用第一种方法更改,没有说key可以作为一个变量名来进行setData,又可能是不支持


    03-12
    赞同 1
    回复 2
    • 伟烽
      伟烽
      03-12

      嗯,多谢,已经解决了

      03-12
      回复
    • 小晴儿
      小晴儿
      08-15回复伟烽
      分享出来喽
      08-15
      回复
  • 騁爲
    騁爲
    03-12
    this.setData({
        'array[1].check': true
    })


    key 不需要 [] 吧

    03-12
    赞同
    回复 5
    • 伟烽
      伟烽
      03-12

      不行的,已经试了好几种写法了,都不生效,

      03-12
      回复
    • 伟烽
      伟烽
      03-12回复伟烽

      ???

      03-12
      回复
    • 騁爲
      騁爲
      03-12回复伟烽

      我项目中也有好些地方用到了局部更新,但是我的代码类似如下:

      let selectedIndex = 1;
      let updateData = {};
      Reflect.set(updateData, `monthReports[${selectedIndex}]`, data);
      // 其他需要更新的数据...
      this.setData(updateData);


      03-12
      回复
    • 伟烽
      伟烽
      03-12回复騁爲

      官方文档提供的思路是可以解决修改局部数据的,刚才是我这边的问题

      03-12
      回复
    • No Matter
      No Matter
      07-18回复伟烽
      官方的网址在那个地方
      07-18
      回复
  • _
    _
    03-12

    var arr=that.data.arr[index].checked

    that.setData({

     [arr]:true,

    })

    这样试试

    03-12
    赞同
    回复 6
    • 伟烽
      伟烽
      03-12

      多谢,已经解决了

      03-12
      回复
    • A-🐷汪汪汪
      A-🐷汪汪汪
      03-12

      请问

      var arr=that.data.arr[index].checked

      that.setData({

       [arr]:true,

      })

      这样多级的数组为什么还是改不了


      03-12
      回复
    • _
      _
      03-13回复A-🐷汪汪汪

      var arr=arr[index].checked

      that.setData({}

      [arr]:true,

      ])  这样试试

      03-13
      回复
    • A-🐷汪汪汪
      A-🐷汪汪汪
      03-13回复A-🐷汪汪汪

      let arr = this.data.addCartList[index].goodList[idx].checked;

      this.setData({

      [arr]: !this.data.addCartList[index].goodList[idx].checked

      })

      并没用

      03-13
      回复
    • 卢霄霄
      卢霄霄
      03-14回复A-🐷汪汪汪

      let arr = 'this.data.addCartList[index].goodList[idx].checked';

      03-14
      回复
    查看更多(1)