微信小程序中的JS

微信小程序中的JS


作用:JS主要是用来做交互,比如:响应用户的点击、获取用户的位置等等。通过编写 JS 脚本文件来处理用户的操作。

简单来说,WXML决定有什么内容,WXSS决定内容长什么样子,JS呢,决定了页面和用户操作的交互,体验好不好就看JS了。

例如,页面中有个按钮,

<view>{{ msg }}</view>
<button bindtap="clickMe">点击我</button>

事件概念:这里的button(bindtap=“clickMe”)绑定了一个clickMe的事件,当点击时就会触发clickMe函数。

而在JS里呢,当点击的时候,就把msg的内容动态替换为“Hello World”。

Page({
  clickMe: function() {
    this.setData({ msg: "Hello World" })
  }
})


事件:

事件呢,就是视图层到逻辑层的通讯方式。

简单来说,通过把事件绑定在组件上(在WXML),然后事件携带信息传递到JS中做函数处理,这就是WXML到JS的通信方式。



举例来说明,在组件中绑定一个事件处理函数。

如bindtap,当点击该组件的时,会在Page中找到相应的事件处理函数(tapName函数)。

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>

JS里的代码:

Page({
  tapName: function(event) {
    console.log(event)
  }
})

当用户点击时,就会执行tapName函数,打印event。


事件呢,可以分为冒泡事件和非冒泡事件。

冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。

非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。


WXML里的常用冒泡事件有:



注意:除上表之外的其他组件自定义事件,如无特殊声明都是非冒泡事件,如<form/>的submit事件,<input/>的input事件,<scroll-view/>的scroll事件。


事件的绑定和冒泡

事件绑定的写法同组件的属性,以 key、value 的形式。也就是key=value(如bindtap="handleTap1")

  • key 以bindcatch开头,然后跟上事件的类型,如bindtapcatchtouchstart。自基础库版本 1.5.0 起,bindcatch后可以紧跟一个冒号,其含义不变,如bind:tap、、catch:touchstart
  • value 是一个字符串,需要在对应的 Page 中定义同名的函数。


注意:bind事件绑定冒泡事件可以向上冒泡,catch事件绑定冒泡事件不会向上冒泡。

<view id="outer" bindtap="handleTap1">
  outer view
  <view id="middle" catchtap="handleTap2">
    middle view
    <view id="inner" bindtap="handleTap3">
      inner view
    </view>
  </view>
</view>

如上,

点击 inner view 会先后调用handleTap3handleTap2,而不会在向上冒泡到outer(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递)。

点击 middle view 会触发handleTap2

点击 outer view 会触发handleTap1


(待续...)




  • 22
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值