微信小程序使用setData修改數組中的單個對象
2020-09-27|HiShop
導讀:習慣使用Vue或者React這類框架的開發者們,肯定不會對修改data內中數組的單個對象而煩惱,因為這些框架已經幫我們很好的處理了這個問題...
習慣使用Vue或者React這類框架的開發者們,肯定不會對修改data內中數組的單個對象而煩惱,因為這些框架已經幫我們很好的處理了這個問題,并且在文檔上也寫的非常清楚。
比如要求是有一個數組存放了購物車的商品信息,而你在購物車內修改了單個商品的期望購買數量后,我們就要動態的更新這個單個對象的購買數量值,如果在小程序里我們會怎么做呢?
如果你按照Vue的寫法來實現的話,不出意外會失敗。而微信小程序也只給我們提供了一個setData方法,這個方法是使用鍵值對的形式對數據進行修改,例如:
- this.setData({
- name : 'leon'
- })
回到我們剛剛的例子里,這時候,如果你想修改單個商品的數量信息,應該怎么寫?
首先展示一種錯誤的寫法:
- Page({
- data: {
- array: [{text: 'init data'}],
- },
- changeItemInArray: function (index) {
- this.setData({
- 'array['+index+'].text':'changed data'
- })
- }
- })
如果這樣動態的寫index,很顯然,這樣是無法使用在對象的key中的,我相信小程序的新手開發者可能嘗試過這樣的寫法。
那么正確的寫法究竟是怎么樣的呢?
- changeItemInArray: function (index) {
- // 提前準備好對象
- var item = this.data.list[index]
- item.count = 100
- // 依舊是根據index獲取數組中的對象
- var key = "list["+ index + "]"
- this.setData({
- // 這里使用鍵值對方式賦值
- key: item
- }, function () {})
- }
最后,希望以后的小程序版本更新中,有更好的賦值方法。希望這篇文章能幫助到小程序的新手開發者。
您可能感興趣:小程序開發
上一篇:小程序的拖拽、縮放和旋轉手勢功能的開發 下一篇:粵省事小程序中的開始日期控件