共计 640 个字符,预计需要花费 2 分钟才能阅读完成。
在微信小程序中如果应用了 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
将做为字符串解决。
正文完