事件

事件系统

常见事件

  • 点击事件: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

数据更新

  1. setData是异步的

    setData是异步的,这意味着如果一个事件要依赖data中的数据,可以会得到不准确的结果。为了避免以下情况,我们可以使用回调函数。

    this.setData({
        userName:"vine"
    },()=>{
        this.doSomething();
    })
    
  2. 使用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});