小程序如何设置data的值
data: { cart: { "1" : { "count" : 1, "total" : 1, "list" : { "3" : 1 } } }} |
比如要设置"3":1为"3":2要如何设置呢?
"1"和"3"是动态改变的,要用变量代替哦。
10 回复
3 楼的写法肯定是可以的。如果说有什么不足之处的话,就是他把整个数据对象都重新赋值了一遍,这样有可能会波及很多“无辜”的数据项,导致重新渲染的负担变大。当然如果涉及的渲染内容不是很多的话问题并不明显。
我在 4 楼给出的代码是我刚刚在开发者工具里跑通的,如果你那里跑不通的话,我也不知道是哪里的问题了。
前面给的代码确实不能直接用,应该这样写:
var idx = 3; page.setData({ [ 'cart[1].list[' + idx + ']' ]: 2 }); |
问题出在你用数字作为属性名,这个在 js 语法本身是可以的,但在小程序 setData 的属性描述时就不行了,数字型的属性名必须用数组下标的方式写。
BTW: 如果你提问题的时候直接把你试过不行的方法说出来,就能避免耽误别人的时间了。我在 2 楼的回答其实要点在于提醒你用方括号的形式可以支持表达式作属性名,你在原帖中特别提到属性名是动态的,因为这个不常见,以为你不知道,所以专门说一下。如果早说你知道这种写法,甚至直接给出你原本的写法,我就可以直接帮你找出错误点了。