参考事件 | 微信开放文档 (qq.com)。
将wxml节点中的数据传递到js页面进行处理
节点中使用data-DataName
bindtap
表示在此节点上绑定一个tap事件
,事件处理函数为tapName
。可以将节点上的数据传到事件处理函数tapName
上,使用data-DataName
来传递,其中DataName
为传递的属性名。
1
| <view id="tapTest" data-hi="Weixin" bindtap="tapName"> Click me! </view>
|
tap上面的节点后,将tap的相关信息封装为event
传到js页面中的tapName
函数(绑定的事件处理函数),打印event
可看到里面封装了哪些信息。
1 2 3 4 5
| Page({ tapName: function(event) { console.log(event) } })
|
需要注意的有:
target
封装了触发事件的节点id
和传出来的数据dataset
。节点传出的属性hi
可用event.target.dataset.hi
来访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| { "type":"tap", "timeStamp":895, "target": { "id": "tapTest", "dataset": { "hi":"Weixin" } }, "currentTarget": { "id": "tapTest", "dataset": { "hi":"Weixin" } }, "detail": { "x":53, "y":14 }, "touches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }], "changedTouches":[{ "identifier":0, "pageX":53, "pageY":14, "clientX":53, "clientY":14 }] }
|
节点中使用mark:MarkName
1 2 3
| <view mark:myMark="last" bindtap="bindViewTap"> <button mark:anotherMark="leaf" bindtap="bindButtonTap">按钮</button> </view>
|
1 2 3 4 5 6
| Page({ bindViewTap: function(e) { e.mark.myMark === "last" e.mark.anotherMark === "leaf" } })
|
方式 |
特点 |
节点上使用data-DataName属性 |
只传递该节点的DataName,使用event.target.dataset.DataName访问 |
节点上使用mark:MarkName属性 |
传递该节点+直到其根节点全部节点的mark数据(不管事件是否冒泡),使用event.mark.MarkName来访问 |