微信小程序的事件绑定、接收参数、示例

本文详细介绍了微信小程序中的各种事件类型,如tap、input、longtap等,并强调了事件处理方法中参数传递的正确方式,即通过data-xxx属性。同时,文章还探讨了微信小程序的单向数据流特性,并给出了利用bindinput事件实现双向数据绑定的示例,包括如何在js中更新数据以及在视图层反映变化。此外,还讲解了事件绑定的bind和catch方法的区别,以及在onLoad中接收页面参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


   1.微信小程序的事件类别:
     tap:点击事件
     input:输入事件
     longtap:长按事件;
     touchstart:触摸开始;
     touchend:触摸结束;
     touchcansce:取消触摸;

     注1:小程序中请求处理方法是不能传递参数,正确方式:通过data-xxx属性传递参数,再通过事件源获得参数
    注2:小程序中默认绑定为单向绑定
          错误
          <button bindtap="handletap(-1)"
          正确
          <button bindtap="handletap" data-number="{{-1}}"

          正解:传递固定值-1 
                data-number="{{-1}}"
                还可以绑值
                data-number="{{n}}" 

                再从事件对象中获取
                 e.currentTarget.dataset.number
          

     注2:在微信小程序中,js的数据和前端显示的数据是单数据流。
          即js里边的数据变了,前端能立刻显示,但如果前端数据变了,js不能改变,怎么办呢!


          我们可以通过bindinput方法,来实现双向数据绑定。


          原理:我们使用bindinput事件来获取input的输入值,然后根据dataset获取要跟 data数组里的对象进行数据绑定
          具体写法
          //1.在data中定义dataList属性,并在其中定义要双向绑定的属性名
          //2.定义bindInput方法
          //3.<input class="input" bindinput="bindInput" data-name="username" placeholder="请输入帐号" auto-focus/>
            bindInput(e) {
              console.log("bindInput");
              //debugger
              // 表单双向数据绑定
              var that = this;
              var dataset = e.target.dataset;
              // data-开头的是自定义属性,可以通过dataset获取到,dataset是一个json对象
              var name = dataset.name;
              var value = e.detail.value;

              //小问题:规则接收数据属性只能叫dataList
              that.data.dataList[name] = value; //逻辑层数据的更改
              // 拼接对象属性名,用于为对象属性赋值
              var attributeName = "dataList." + name;
              that.setData({//视图层数据的更改
                [attributeName]: value
              });
              console.log(that.data.dataList);
            }
    
   2.微信小程序的事件绑定:
     bind绑定;
     catch绑定;(能阻止事件冒泡)
     例如:绑定点击事件 bindtap
     page.wxml 文件

   3.微信小程序接收参数的示例

        //接收参数
        Page({
          onLoad: function(options) {
            //小程序Data的赋值必须使用setData方法,错误:this.Data.title='xxx'; 
            this.setData({
              title: options.title
            })
          }
        })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值