时间:2019-05-04 来源:小程序工厂
m***: var idx = 3;
page.setData({
['cart.1.list.' + idx]: 2
});
蓦***:
这样子不行吧,你有试过吗?这样子要是可以的话我就不会来这里问了。谢谢你的热心回答
mac版本微信开发者工具保存不生效
M***: var cart = this.data.cart;
var idx = 3;
cart.1.list[idx] = 2;
this.setData({
cart: cart
})
m***:
前面给的代码确实不能直接用,应该这样写:
var idx = 3;
page.setData({
['cart[1].list[' + idx + ']']: 2
});
问题出在你用数字作为属性名,这个在 js 语法本身是可以的,但在微信小程序 setData 的属性描述时就不行了,数字型的属性名必须用数组下标的方式写。
BTW: 如果你提问题的时候直接把你试过不行的方法说出来,就能避免耽误别人的时间了。我在 2 楼的回答其实要点在于提醒你用方括号的形式可以支持表达式作属性名,你在原帖中特别提到属性名是动态的,因为这个不常见,以为你不知道,所以专门说一下。如果早说你知道这种写法,甚至直接给出你原本的写法,我就可以直接帮你找出错误点了。
蓦***:
我把键值1改成a1以后,Mr.J的整体斌值方法是可行的。maq的方法我之前都有测试过多遍,变通过几次都是不行的,可能是哪里有疏忽了。谢谢各位热心回答。
微信开发者工具BUG,API:wx.chooseLocation##微信小程序教程
m***:
3 楼的写法肯定是可以的。如果说有什么不足之处的话,就是他把整个数据对象都重新赋值了一遍,这样有可能会波及很多“无辜”的数据项,导致重新渲染的负担变大。当然如果涉及的渲染内容不是很多的话问题并不明显。
我在 4 楼给出的代码是我刚刚在开发者工具里跑通的,如果你那里跑不通的话,我也不知道是哪里的问题了。
蓦***:
刚刚测量了一下,maq的方法也是可以的,而且比整体斌值的方法更好用,感谢maq
M***:
不错,我也学习了
官网开发管理加载不出来-微信小程序开发教程
A***: var idx = 3;var newData={};newData['cart[1].list[' + idx + ']']=2;
page.setData(newData);
这样也行的吧
铭***:
maq128吧