在页面调用js方法时,传了一个在页面上拼接的参数 例如 data-item = "list[{{listIndex}}].children[{{childrenIndex}}]"
js 接收时,例如 itemStr = "list[0].children[0]"
请问如何获取data中的值呢
我的目的是,通过方法修改item并保存,由于小程序不完全支持双向绑定,所以就像传一个字符串作为setData方法的key去渲染
目前我的处理如下,可以实现,但是觉得有点绕,想看看有木有更好的方法。
<view wx:for="{{lst}}">
<view wx:for="{{item.children}}" wx:for-item="tag" wx:for-index="tagIndex"
data-item="{{tag}}" data-itemname="list[{{index}}].children[{{childrenIndex}}]"
data-listname="{{lst}}" bindtap="handleClick">
</view>
</view>
handleClick(event){
let item = event.currentTarget.dataset.item //通过传参
let itemname = event.currentTarget.dataset.itemname
let listname = event.currentTarget.dataset.listname
let lst = this.data[listname] //由于listname只是简单的一个字符串因此可以这样获取
//let item = this.data[itemname] //开始是这样想的,但仔细一看就会发现有问题,通过实践发现写法不行
对item进行操作:xxxx
对list进行操作:xxxx
this.setData({
[itemname]:item,
[listname]:lst
})
}
https://developers.weixin.qq.com/miniprogram/dev/framework/view/component.html#%E5%85%AC%E5%85%B1%E5%B1%9E%E6%80%A7
相当于是
let item = this.data.list[0].children[0]
data-item="{{list[0].children[0]}}"
<view wx:for="{{lst}}">
<view wx:for="{{item.children}}" wx:for-item="tag" wx:for-index="tagIndex" data.item="{{tag}}" data- itemname="list[{{index}}].children[{{childrenIndex}}]" data-listname="{{lst}}" bindtap="handleClick"></view>
</view>
handleClick(event){
let item = event.currentTarget.dataset.item //通过传参
let itemname = event.currentTarget.dataset.itemname
let listname = event.currentTarget.dataset.listname
let lst = this.data[listname] //由于listname只是简单的一个字符串因此可以这样获取
//let item = this.data[itemname] //开始是这样想的,但仔细一看就会发现有问题,通过实践发现写法不行
对item进行操作:xxxx
对list进行操作:xxxx
this.setData({
[itemname]:item,
[listname]:lst
})
}