<view class="seat"> <block wx:for="{{devData}}" wx:for-index="i" wx:for-item="item" wx:key="index"> <view class='onehandle5'> <block wx:for="{{3}}" wx:for-index="k" wx:for-item="item_k" wx:key="index"> <view wx:if="{{devData[i+item_k] != null && i%3 == 0 }}" class="useage2 {{isActive ? 'active' : ''}}" bindtap="seatActive" data-index="{{i}}"> {{devData[i+item_k]}} </view> </block> </view> </block> </view>怎么将 isActive 变量改为一个数组或对象,以便为每个座位保存一个单独的状态。例如,你可以将 devData 数组中的每个元素映射到一个对象,其中包含 isActive 属性。然后在 seatActive 函数中,只更新被点击的座位的 isActive 属性,并使用 setData 仅更新该座位的状态。这样就可以避免所有座位都被更新的问题。
时间: 2023-07-14 21:13:17 浏览: 39
你可以将 devData 数组中的每个元素映射到一个对象,其中包含 isActive 属性。例如:
```
devData: [
{seatNum: 'A1', isActive: false},
{seatNum: 'A2', isActive: false},
{seatNum: 'A3', isActive: false},
{seatNum: 'B1', isActive: false},
{seatNum: 'B2', isActive: false},
{seatNum: 'B3', isActive: false},
{seatNum: 'C1', isActive: false},
{seatNum: 'C2', isActive: false},
{seatNum: 'C3', isActive: false},
]
```
然后在 seatActive 函数中,只更新被点击的座位的 isActive 属性,并使用 setData 仅更新该座位的状态。例如:
```
seatActive: function (e) {
var index = e.currentTarget.dataset.index;
var newData = {};
newData['devData[' + index + '].isActive'] = !this.data.devData[index].isActive;
this.setData(newData);
}
```
这样就可以避免所有座位都被更新的问题,而只更新被点击的座位的状态。