事件
事件系统
常见事件
点击事件:catchtap和bindtap
catchtap会阻止事件向上冒泡,而bindtap不会
传参
使用data-*
即可传参,在接收时,要使用参数e接收,比如
<view data-idx="1" catchtap="clickMe">点击我</view>
clickMe:function({currentTarget={}}){
const idx = currentTarget.dataset.idx;
}
注意:在data-*
中不区分大小写和连字符,这意味着data-userName
或者data-user-name
在接收时都是一致的username
。
数据更新
setData是异步的
setData是异步的,这意味着如果一个事件要依赖data中的数据,可以会得到不准确的结果。为了避免以下情况,我们可以使用回调函数。
this.setData({ userName:"vine" },()=>{ this.doSomething(); })
使用setData设置对象的一项。假设我们有如下分页数据,现在我们要将pager对象的page加一页,那么如果操作呢?
data:{ pager:{ row:7, // 7条 page:1 //第一页 } }
可以使用以下方法对数组的一项单独操作,即可。
this.setData({ 'pager.page':++this.data.pager.page })
// 设置数组 data:{person:[{name:"mary"}]} // index = 0; this.setData({ 'person[0].name':'vine', [`person[${index}].name`]:'vine' })
跳转事件
- 跳转到别的页面
// 跳转到首页
wx.navigateTo({
url:`/pages/index/index?userName=${userName}`
})
// 接受参数
onLoad(options){
const {userName} = options.userName;
console.log(userName);
}
- 其他
// navigateTo,redirectTo,switchTab,reLaunch
const linkType = navigateTo;
wx[linkType].call(wx, {url});