请教一些关于动态拼接变量的写法问题?
发布于 4 年前 作者 xtao 11659 次浏览 来自 问答

在页面调用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
  })
}
2 回复
<view wx:for="{{xxx}}" data-item="list[{{listIndex}}].children[{{childrenIndex}}]" bindtap="handleClick"></view>
handleClick(e) {
  const {dataset: {item}} = e.currentTarget
  console.log(item)
}
回到顶部