以下是关于“微信小程序教程之事件”的详细攻略:
什么是小程序事件
微信小程序中,我们可以使用事件来监听用户的操作,并根据用户操作来触发我们程序中的相应的行为。小程序中常见的一些事件如下:
- 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("拖拽结束")
}
})
在上述代码中,我们利用了小程序的触摸事件 bindtouchstart
、bindtouchmove
和 bindtouchend
,实现了一个简单的拖拽效果。当用户按下组件并移动时,onTouchMove
事件处理函数会被触发,它会根据用户的移动计算出相应的位移,并更新组件的 x
和 y
属性,从而实现组件的拖拽效果。当用户松开组件时,onTouchEnd
事件处理函数会被触发,我们可以在其中进行一些额外的处理,例如打印一条日志信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:微信小程序 教程之事件 - Python技术站