8.事件的绑定
小程序中绑定事件,通过bind关键字来实现。如 bindtap bindinput bindchange 等
不同的组件支持不同的事件,具体看组件的说明即可。
8.1. wxml
html
<input bindinput="handleInput" />
8.2. Page
js
Page({
// 绑定的事件
handleInput: function(e) {
console.log(e);
console.log("值被改变了");
}
})
8.3注意
绑定事件时不能带参数 不能带括号 以下为错误写法
html<input bindinput="handleInput(100)" />
事件传值 通过标签⾃定义属性的⽅式 和 value
html<input bindinput="handleInput" data-item="100" />
事件触发时获取数据
jshandleInput: function(e) { // {item:100} console.log(e.currentTarget.dataset) // 输入框的值 console.log(e.detail.value); }
8.4. 双向绑定
注意:基础库需要 2.9.3 开始支持
在 WXML 中,普通的属性的绑定是单向的。例如:
html
<input value="{{value}}" />
如果使用 this.setData({ value: 'leaf' })
来更新 value
,this.data.value
和输入框的中显示的值都会被更新为 leaf
;但如果用户修改了输入框里的值,却不会同时改变 this.data.value
。
如果需要在用户输入的同时改变 this.data.value
,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model:
前缀:
html
<input model:value="{{value}}" />
8.5 作业
实现如下点击效果
- index.wxml
xml
<view class="page">
//点击后在这里显示信息,来表明是有点击事件的
<view>{{clickMsg}}</view>
//设置点击事件
<view>
<view id="1" class="view-item" bindtap="clickMe">按钮1</view>
<view id="2" class="view-item" bindtap="clickMe">按钮2</view>
</view>
</view>
- index.wxss
css
.page{
text-align: center;
}
.view-item{
background-color:green;
width: 60px;
height: 30px;
margin: 30px auto 0 auto;
color: navajowhite;
border-radius: 10px;
padding: 20px;
}
- index.js
js
//注册两个变量
var id;
var count = 0;
var param = {
data: {
clickMsg: '显示点击内容'
},
//function就是触发点击事件的函数,以后是点击事件你就这样写就行
//e就是event事件对象,包含了很多,比如:谁被点击了,什么时候被点击了
clickMe: function (e) {
count++;
console.log(e);//把点击事件详细信息打印到调试的console中
id = e.currentTarget.id; //获取被点击按钮的id
param.data.clickMsg = '显示点了谁:' + id + '点击次数' + count;
//重新刷新clickMsg的显示内容,要想看到message变化必须写这个
this.setData(param.data);
}
};
Page(param);
//这个必须写,它是为了让param这个函数真实化,要不然你干写着,在index.wxml中调用时没反应的

