小程序
小游戏
企业微信
微信支付
扫描小程序码分享
data: {
cart: {
"1"
: {
"count"
: 1,
"total"
"list"
"3"
: 1
}
}}
比如要设置"3":1为"3":2要如何设置呢?
"1"和"3"是动态改变的,要用变量代替哦。
13 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你把list设置成list:{
"3":2
}不就行了
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
10年淘宝开放平台见过的
@铭锋科技: 是的。见过? ^_^
maq128吧
var idx = 3;
var
idx = 3;
var newData={};
newData['cart[1].list[' + idx + ']']=2;
[
'cart[1].list['
+ idx +
']'
]=2;
page.setData(newData);
page.setData(
);
这样也行的吧
不错,我也学习了
刚刚测量了一下,maq的方法也是可以的,而且比整体斌值的方法更好用,感谢maq
3 楼的写法肯定是可以的。如果说有什么不足之处的话,就是他把整个数据对象都重新赋值了一遍,这样有可能会波及很多“无辜”的数据项,导致重新渲染的负担变大。当然如果涉及的渲染内容不是很多的话问题并不明显。
我在 4 楼给出的代码是我刚刚在开发者工具里跑通的,如果你那里跑不通的话,我也不知道是哪里的问题了。
我把键值1改成a1以后,Mr.J的整体斌值方法是可行的。maq的方法我之前都有测试过多遍,变通过几次都是不行的,可能是哪里有疏忽了。谢谢各位热心回答。
前面给的代码确实不能直接用,应该这样写:
page.setData({
]: 2
});
问题出在你用数字作为属性名,这个在 js 语法本身是可以的,但在小程序 setData 的属性描述时就不行了,数字型的属性名必须用数组下标的方式写。
BTW: 如果你提问题的时候直接把你试过不行的方法说出来,就能避免耽误别人的时间了。我在 2 楼的回答其实要点在于提醒你用方括号的形式可以支持表达式作属性名,你在原帖中特别提到属性名是动态的,因为这个不常见,以为你不知道,所以专门说一下。如果早说你知道这种写法,甚至直接给出你原本的写法,我就可以直接帮你找出错误点了。
正在加载...
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你把list设置成list:{
"3":2
}不就行了
10年淘宝开放平台见过的
@铭锋科技: 是的。见过? ^_^
maq128吧
var
idx = 3;
var newData={};
newData
[
'cart[1].list['
+ idx +
']'
]=2;
page.setData(
newData);
这样也行的吧
不错,我也学习了
刚刚测量了一下,maq的方法也是可以的,而且比整体斌值的方法更好用,感谢maq
3 楼的写法肯定是可以的。如果说有什么不足之处的话,就是他把整个数据对象都重新赋值了一遍,这样有可能会波及很多“无辜”的数据项,导致重新渲染的负担变大。当然如果涉及的渲染内容不是很多的话问题并不明显。
我在 4 楼给出的代码是我刚刚在开发者工具里跑通的,如果你那里跑不通的话,我也不知道是哪里的问题了。
我把键值1改成a1以后,Mr.J的整体斌值方法是可行的。maq的方法我之前都有测试过多遍,变通过几次都是不行的,可能是哪里有疏忽了。谢谢各位热心回答。
前面给的代码确实不能直接用,应该这样写:
var
idx = 3;
page.setData({
[
'cart[1].list['
+ idx +
']'
]: 2
});
问题出在你用数字作为属性名,这个在 js 语法本身是可以的,但在小程序 setData 的属性描述时就不行了,数字型的属性名必须用数组下标的方式写。
BTW: 如果你提问题的时候直接把你试过不行的方法说出来,就能避免耽误别人的时间了。我在 2 楼的回答其实要点在于提醒你用方括号的形式可以支持表达式作属性名,你在原帖中特别提到属性名是动态的,因为这个不常见,以为你不知道,所以专门说一下。如果早说你知道这种写法,甚至直接给出你原本的写法,我就可以直接帮你找出错误点了。