关于微信小程序this.setData()用法

基本使用

字符串 数值 布尔

data: {
    name: 'Blake'
}

this.setData({'name': 'Yang'})

对象

data: {
    person: {
        name: 'Blake',
        age: 9
    }
}

this.setData({'person.name': 'Blake})

高能

普通的数组

怎样动态修改某个元素

//wxss
<view wx:for="{{arr}}" bindtap="changeNum" data-id="index">{{item}}</view>
//js
data: {
    arr: [1,2,3,4,5,6]
}

changeNum(e){
    var id = e.currentTarget.dataset.id
    var str = "arr["+id+"]"
    this.setData({
        [str]: 99
    })
}

or

changeNum(e){
  var id = e.currentTarget.dataset.id
  this.data.arr[id] = 99
  this.setData({
      arr: this.data.arr
   })
}

元素是对象的数组

当元素被点击时,修改age

//js
data: {
    people: [
        {
            name: 'Blake',
            age: 9
        },
        {
            name: 'Blake',
            age: 9
        },
        {
            name: 'Blake',
            age: 9
        }
    ]
}

changeNum(e){
    var id = e.currentTarget.dataset.id
    var str = "arr["+id+"].age"
    this.setData({
        [str]: 99
    })
}

or

changeNum(e){
  var id = e.currentTarget.dataset.id
  this.data.arr[id].age = 99
  this.setData({
      arr: this.data.arr
   })
}