微信小程序事件绑定、路由以及路由传参

微信小程序开发过程中,根据事件是否冒泡,有两种事件绑定形式。

事件分为冒泡事件和非冒泡事件:
冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

1)事件绑定

对于冒泡事件而言:利用bind(事件)进行绑定,非冒泡事件利用catch(事件进行绑定)

<view class="container">
  <!-- 父级也绑定有事件 -->
  <view bindtap='addNum'>
    <!-- 子代绑定事件 -->
    <view bindtap='addType'>触发事件,也会触发父级事件</view>
  </view>
</view>
<view class="container">
  <!-- 父级也绑定有事件 -->
  <view bindtap='addNum'>
    <!-- 子代绑定事件 -->
    <view catchtap='addType'>触发事件,不会触发父级事件</view>
  </view>
</view>

2)路由

在微信小程序中,根据当前页面是否需要被出栈再重新加载新页面,主要有navigateTo、redirectTo两种形式,当然也还有switchTab(只能打开 tabBar 页面)和reLaunch这两种形式。

navigateTo:当前路由页面onHide,新的路由页面onLoad、onShow,即当前路由页面是隐藏的,而不是出栈
redirectTo:当前路由页面onUnload,新的路由页面onLoad、onShow,即当前路由页面出栈

<view class="container">
  <!-- 父级也绑定有事件 -->
  <view>
    <!-- 子代绑定事件 -->
    <view bindtap='linkNews'>跳转到详情页</view>
  </view>
</view>
// 方法
  linkNews: function () {
    wx.navigateTo({
      url: '../detail/detail'
    })
    // 跳转的同时  销毁当前页  无返回键
    wx.redirectTo({
      url: '../detail/detail'
    })
  },

路由使用相对路由。

3)路由传参

利用data-(参数字段),进行参数传递

<view class="container">
  <view class='mainbox'>
    <view class='newslist' wx:for="{{newslist}}" wx:key="*this" wx:for-item="dayItem">
      <view class='time'>{{dayItem.time}}</view>
      <view class='list' wx:for="{{dayItem.list}}" wx:key="*this" data-id="{{item.id}}" bindtap='linkNews' wx:for-item="item">
        {{item.title}}
      </view>
    </view>
  </view>
</view>

路由中:

// 方法
  linkNews: function (event) {
    // 获取携带的新闻id
    var id = event.target.dataset.id
    console.log(id)
    wx.navigateTo({
      url: '../detail/detail?id=' + id+'&key=123'
    })
    // 跳转的同时  销毁当前页  无返回键
    // wx.redirectTo({
    //   url: '../detail/detail?id=' + id
    // })
  },

路由页面在onLoad中获取参数

/**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options)  
    // 赋值
    this.setData({
      newsid: options.id
    })
    console.log('onload')
  },


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值