这几天在做页面的时候,关于setData方法产生了一点疑问,现在来总结一下。
首先说一下赋值对象属性的两种方法
1.修改data下的对象
this.setData({
'params.name':'李四'
})
2.修改data下的对象数组
this.setData({
'example[1].text':"清零"
})
如果要给对象数组中某一个对象的某个属性赋值,可以采用以下两种方式:
var temp1 = 'example['+order+'].state'
var temp2 = `example[${order}].text`
然后通过[temp1]:'runnning'这样的方式来进行赋值
下面是代码示例
wxml
<view class="container1">
<viwe>{{params.name}}</viwe>
<button type="primary" bindtap="changetext1"> 点击我改变文字</button>
</view>
<view class="container2">
<view class="container-content" wx:for="{{example}}">
<view>{{item.state}}
</view>
<view>{{item.text}}
</view>
<button type="primary" bindtap="changetext2" data-index="{{index}}"> 点击我改变文字</button>
</view>
</view>
js
data: {
params: {
name: '张三',
age: '18',
gender: 1
},
example: [{
id: '1',
state:"paused",
text:"第一个"
},
{
id: '2',
state:"running",
text:"第二个"
}
]
},
changetext1:function(){
console.log(1)
this.setData({
'params.name':'李四'
})
},
changetext2:function(e){
var order = e.target.dataset.index
console.log(e.target.dataset.index)
var temp1 = 'example['+order+'].state'
var temp2 = `example[${order}].text`
this.setData({
[temp1]:'down',
[temp2]:'清零'
})
},
效果图
original:
after bindtap: