小程序事件绑定、传参、捕获与冒泡

一.常见的事件

二.事件绑定与传参

页面中

不需要传参的事件

<!--写法一 bind事件名='函数名' -->
<view bindtap="click">我是事件</view>
<!--写法一 bind:事件名='函数名' -->
<view bind:tap="click">我是事件</view>

需要传参的事件

<!-- 点击传参   data-传过去的key='变量值' -->
<!-- 点击传变量 data-传过去的key='{{变量名}}' -->

<
button bind:tap="click2" data-name="{{name}}" data-age="18" id="bt">我是按钮</button>

.js文件

Page({

  /*页面的初始数据*/
  data: {
    name:"owen"
  },
  //e为事件对象,事件所有产生的数据都在e中
  click:function(e){
    console.log("你点我了") 
  },
  click2:function(e){
    console.log("你点我了",e) 
  },
  )}

总结:

1 响应函数直接写在page对象中就可以了,不需要和vue一样写在methods里面
2 <view bind:事件名称 = "响应函数的函数名" data-参数名 = "值">
3 获取传过来的参数,在事件对象中。用e.currentTarget.dataset.属性的名称

三、事件捕获与冒泡

wxml页面

<!-- capture-bind:tap 事件的捕获,从外面到里面-->
<!-- bind:tap就是事件的冒泡,从里面到外面传递 -->
<view class="outter" capture-bind:tap="click4" bind:tap="click7" data-a="o">外面

  <view class="midd" capture-bind:tap="click5" bind:tap="click8" data-a="i">
    <view class="inner"  capture-bind:tap="click6" bind:tap="click9">
      里面
    </view>

    中间
  </view>

</view>

<!-- 如何阻止事件捕获  将 capture-bind:tap改成  capture-catch:tap-->
<view class="outter" capture-bind:tap="click4" bind:tap="click7" data-a="o">外面

  <view class="midd" capture-catch:tap="click5" bind:tap="click8" data-a="i">
    <view class="inner"  capture-bind:tap="click6" bind:tap="click9">
      里面
    </view>

    中间
  </view>

</view>


<!-- 如何阻止事件冒泡  将bind:tap 改成 catch:tap-->
<view class="outter" capture-bind:tap="click4" bind:tap="click7" data-a="o">外面

  <view class="midd" capture-bind:tap="click5" bind:tap="click8" data-a="i">
    <view class="inner"  capture-bind:tap="click6" catch:tap="click9">
      里面
    </view>

    中间
  </view>

</view>

js文件

// pages/test1/test1.js
Page({

  data: {
    name:"owen"

  click4:function(e){
    console.log("捕获外")
  },
  click5:function(e){
    console.log("捕获中")
  },
  click6:function(e){
    console.log("捕获里")
  },
  click7:function(e){
    console.log("冒泡外")
  },
  click8:function(e){
    console.log("冒泡中")
  },
  click9:function(e){
    console.log("冒泡里")
  }
})

wxss文件

/* pages/test1/test1.wxss */

.outter{
  width: 600rpx;
  height: 600rpx;
  background-color: red;
}
.midd{
  width: 400rpx;
  height: 400rpx;
  background-color: blue;
}
.inner{
  width: 200rpx;
  height: 200rpx;
  background-color: yellow;
}
View Code
原文地址:https://www.cnblogs.com/baohanblog/p/12457490.html