沃梦达 / IT编程 / 前端开发 / 正文

微信小程序 教程之事件

以下是关于“微信小程序教程之事件”的详细攻略:

以下是关于“微信小程序教程之事件”的详细攻略:

什么是小程序事件

微信小程序中,我们可以使用事件来监听用户的操作,并根据用户操作来触发我们程序中的相应的行为。小程序中常见的一些事件如下:

  • touchstart、touchmove、touchend:触摸事件,可以监听用户触摸屏幕的动作;
  • tap、longpress、longtap:点击事件,可以监听用户单击、长按屏幕的动作;
  • input、confirm、blur:输入事件,可以监听用户输入内容的动作;
  • submit、reset:表单事件,可以监听用户提交表单或重置表单的动作。

小程序事件的使用

1. 事件绑定

要使用小程序中的事件,首先要将事件与相应的组件绑定起来。在小程序中,我们可以使用 bind:eventType 的方式进行事件绑定,其中 eventType 对应所绑定的事件类型。例如,使用 bind:tap 可以将 tap 事件绑定到某个组件上。示例代码如下:

<button bind:tap="onTap">点击我</button>

在上述代码中,我们将 tap 事件绑定到了一个按钮组件上,并指定了一个名为 onTap 的事件处理函数。

2. 事件处理函数

一旦事件和组件绑定成功,我们就需要编写一个事件处理函数,用来处理用户触发该事件时需要执行的操作。在小程序中,事件处理函数是一个普通的 JavaScript 函数,可以像其他函数一样进行定义。示例代码如下:

Page({
  onTap: function () {
    console.log('按钮被点击了!');
  }
})

在上述代码中,我们定义了一个名为 onTap 的事件处理函数,它会在按钮被点击时打印一条信息到控制台中。

示例1:利用 OnInput 和 实现实时搜索

<!--wxml-->
<view class="search">
  <input type="text" class="search-input" placeholder="请输入关键字" bindinput="onInput"/>
  <button class="search-button" bindtap="onSearch">搜索</button>
</view>
<view class="search-result">
  <picker bindchange="onSortChange">
    <view class="picker sort">
      排序方式:{{sortList[currentSortIndex]}}
      <text class="sort-arrow"></text>
    </view>
    <picker-view class="picker-view sort-view" value="{{currentSortIndex}}" indicator-style="height: 50rpx;" bindchange="onSortChange">
      <picker-view-column>
        <view class="picker-item" wx:for="{{sortList}}" wx:key="">{{item}}</view>
      </picker-view-column>
    </picker-view>
  </picker>
  <view class="list">
    <block wx:if="{{searchResult.length == 0}}">
      暂无数据
    </block>
    <block wx:else wx:for="{{searchResult}}" wx:key="index">
      <view class="list-item">{{item}}</view>
    </block>
  </view>
</view>
//js
Page({
  data: {
    keyword: '',
    searchResult: [],
    sortList: ['默认排序', '按照热度排序', '按照时间排序'],
    currentSortIndex: 0
  },
  onInput: function (e) {
    this.setData({
      keyword: e.detail.value
    })
    this.search(e.detail.value, this.data.currentSortIndex)
  },
  onSearch: function () {
    this.search(this.data.keyword, this.data.currentSortIndex)
  },
  onSortChange: function (e) {
    this.setData({
      currentSortIndex: e.detail.value
    })
    this.search(this.data.keyword, e.detail.value)
  },
  search: function (keyword, sortIndex) {
    // 实现搜索逻辑
  }
})

在上述代码中,我们利用小程序的输入事件 bindinput 实现了一个简单的实时搜索功能。当用户在搜索框中输入关键字时,onInput 事件处理函数会被触发,它会将用户输入的关键字保存到组件的 data 数据中,并调用 search 方法执行搜索操作。同时,我们也绑定了一个搜索按钮的点击事件,当用户点击该按钮时,会调用 onSearch 方法执行搜索操作。最后,我们还实现了一个排序功能,会根据用户选择的排序方式对搜索结果进行排序。

示例2:利用 onTouchStart 和 实现拖拽效果

<!--wxml-->
<movable-view class="box" x="{{x}}" y="{{y}}" bindtouchstart="onTouchStart" bindtouchmove="onTouchMove" bindtouchend="onTouchEnd" scale="{{scale}}" direction="all">
  <view class="content">
    看我,我可以拖拽哦!
  </view>
</movable-view>
/*wxss*/
.box {
  width: 200rpx;
  height: 200rpx;
  position: absolute;
}

.content {
  background-color: #168fff;
  color: #fff;
  text-align: center;
  line-height: 200rpx;
  height: 200rpx;
  width: 200rpx;
  font-size: 36rpx;
}
//js
Page({
  data: {
    x: 0,
    y: 0,
    scale: 1
  },
  onTouchStart: function (e) {
    this.startX = e.touches[0].pageX
    this.startY = e.touches[0].pageY
  },
  onTouchMove: function (e) {
    var moveX = e.touches[0].pageX - this.startX
    var moveY = e.touches[0].pageY - this.startY
    this.setData({
      x: this.data.x + moveX,
      y: this.data.y + moveY
    });

    this.startX = e.touches[0].pageX;
    this.startY = e.touches[0].pageY;
  },
  onTouchEnd: function (e) {
    console.log("拖拽结束")
  }
})

在上述代码中,我们利用了小程序的触摸事件 bindtouchstartbindtouchmovebindtouchend,实现了一个简单的拖拽效果。当用户按下组件并移动时,onTouchMove 事件处理函数会被触发,它会根据用户的移动计算出相应的位移,并更新组件的 xy 属性,从而实现组件的拖拽效果。当用户松开组件时,onTouchEnd 事件处理函数会被触发,我们可以在其中进行一些额外的处理,例如打印一条日志信息。

本文标题为:微信小程序 教程之事件