微信小程序使用setData修改數(shù)組中的單個(gè)對(duì)象
習(xí)慣使用Vue或者React這類框架的開(kāi)發(fā)者們,肯定不會(huì)對(duì)修改data內(nèi)中數(shù)組的單個(gè)對(duì)象而煩惱,因?yàn)檫@些框架已經(jīng)幫我們很好的處理了這個(gè)問(wèn)題,并且在文檔上也寫的非常清楚。
比如要求是有一個(gè)數(shù)組存放了購(gòu)物車的商品信息,而你在購(gòu)物車內(nèi)修改了單個(gè)商品的期望購(gòu)買數(shù)量后,我們就要?jiǎng)討B(tài)的更新這個(gè)單個(gè)對(duì)象的購(gòu)買數(shù)量值,如果在小程序里我們會(huì)怎么做呢?
如果你按照Vue的寫法來(lái)實(shí)現(xiàn)的話,不出意外會(huì)失敗。而微信小程序也只給我們提供了一個(gè)setData方法,這個(gè)方法是使用鍵值對(duì)的形式對(duì)數(shù)據(jù)進(jìn)行修改,例如:
- this.setData({
- name : 'leon'
- })
回到我們剛剛的例子里,這時(shí)候,如果你想修改單個(gè)商品的數(shù)量信息,應(yīng)該怎么寫?
首先展示一種錯(cuò)誤的寫法:
- Page({
- data: {
- array: [{text: 'init data'}],
- },
- changeItemInArray: function (index) {
- this.setData({
- 'array['+index+'].text':'changed data'
- })
- }
- })
如果這樣動(dòng)態(tài)的寫index,很顯然,這樣是無(wú)法使用在對(duì)象的key中的,我相信小程序的新手開(kāi)發(fā)者可能嘗試過(guò)這樣的寫法。
那么正確的寫法究竟是怎么樣的呢?
- changeItemInArray: function (index) {
- // 提前準(zhǔn)備好對(duì)象
- var item = this.data.list[index]
- item.count = 100
- // 依舊是根據(jù)index獲取數(shù)組中的對(duì)象
- var key = "list["+ index + "]"
- this.setData({
- // 這里使用鍵值對(duì)方式賦值
- key: item
- }, function () {})
- }
最后,希望以后的小程序版本更新中,有更好的賦值方法。希望這篇文章能幫助到小程序的新手開(kāi)發(fā)者。