商城系统 注册

微信小程序使用setData修改数组中的单个对象

2020-09-27|HiShop
导读:习惯使用Vue或者React这类框架的开发者们,肯定不会对修改data内中数组的单个对象而烦恼,因为这些框架已经帮我们很好的处理了这个问题...

微信小程序使用setData修改数组中的单个对象

习惯使用Vue或者React这类框架的开发者们,肯定不会对修改data内中数组的单个对象而烦恼,因为这些框架已经帮我们很好的处理了这个问题,并且在文档上也写的非常清楚。

比如要求是有一个数组存放了购物车的商品信息,而你在购物车内修改了单个商品的期望购买数量后,我们就要动态的更新这个单个对象的购买数量值,如果在小程序里我们会怎么做呢?

如果你按照Vue的写法来实现的话,不出意外会失败。而微信小程序也只给我们提供了一个setData方法,这个方法是使用键值对的形式对数据进行修改,例如:

 

  1. this.setData({
  2. name : 'leon'
  3. })

回到我们刚刚的例子里,这时候,如果你想修改单个商品的数量信息,应该怎么写?

首先展示一种错误的写法:

 

  1. Page({
  2. data: {
  3. array: [{text: 'init data'}],
  4. },
  5. changeItemInArray: function (index) {
  6. this.setData({
  7. 'array['+index+'].text':'changed data'
  8. })
  9. }
  10. })

如果这样动态的写index,很显然,这样是无法使用在对象的key中的,我相信小程序的新手开发者可能尝试过这样的写法。

那么正确的写法究竟是怎么样的呢?

 

  1. changeItemInArray: function (index) {
  2.  
  3. // 提前准备好对象
  4. var item = this.data.list[index]
  5.  
  6. item.count = 100
  7.  
  8. // 依旧是根据index获取数组中的对象
  9. var key = "list["+ index + "]"
  10.  
  11. this.setData({
  12. // 这里使用键值对方式赋值
  13. key: item
  14. }, function () {})
  15. }

最后,希望以后的小程序版本更新中,有更好的赋值方法。希望这篇文章能帮助到小程序的新手开发者。

 

微信小程序使用setData修改数组中的单个对象

电话咨询 预约演示 0元开店