Skip to content

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注意

  1. 绑定事件时不能带参数 不能带括号 以下为错误写法

    html
    <input bindinput="handleInput(100)" />
  2. 事件传值 通过标签⾃定义属性的⽅式 和 value

    html
    <input bindinput="handleInput" data-item="100" />
  3. 事件触发时获取数据

    js
     handleInput: 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' }) 来更新 valuethis.data.value 和输入框的中显示的值都会被更新为 leaf ;但如果用户修改了输入框里的值,却不会同时改变 this.data.value

如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model: 前缀:

html
<input model:value="{{value}}" />

8.5 作业

实现如下点击效果

2018123151218438

  • 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中调用时没反应的

Released under the MIT License.