在微信小程序中如果应用了wx:for进行渲染时,因为同时生成了很多一样的dom。这时候如果想晓得以后解决的是哪个对象,则须要在事件中进行传参,办法如下:

<view data-xxx="{{xxx}}" bindonchange="bindOnChange"></view>

此时,当触发bindOnChange事件时,便能够在 C 中接管到应用data-xxx传入的参数了.

bindOnChange(e) {    console.log(e.currentTarget.dataset.xxx);    console.log(e.target.dataset.xxx);}

然而不晓得微信出于什么目标,当应用data-xxx来绑定数据时,居然应用的不是地址传递,取而代之是进行值复制。比方:

  data: {    xxx: {value: 123}  },  bindOnChange(e) {    const xxx = e.currentTarget.dataset.xxx;    xxx.value = 234;    console.log(this.data.xxx.value);  // 后果依然是123  }

我想没有应用简略的地址传递而是取而代之了更简单的值传递可能是为了关照老手或是升高小程序框架的难度吧。

另外还有个小坑是,它的语法是:data-xxx="{{foo}}",此时它会复制C层(实际上应该是 C 层中的数据复制(非值传递)到了 V 层)中的data.foo复制过来。如果语法不小心写成data-xxx="foo", 那么此时的foo将做为字符串解决。