除了可以使用addEventListener()
方法监听某个特定元素上的事件外,
也可以使用.on()
方法实现批量元素的事件绑定。
示例
点击新闻列表,获取当前列表项的id,并将该id传给新闻详情页面,然后打开新闻详情页面
扩展阅读
代码块激活字符: mmon
使用on()
方法绑定事件后,若希望取消绑定,则可以使用off()
方法。
off()
方法根据传入参数的不同,有不同的实现逻辑。
示例
off(event,selector,handle)
适用于取消对应选择器上特定事件所执行的特定回调,例如:
off(event,selector)
适用于取消对应选择器上特定事件的所有回调,例如:
off(event)
适用于取消当前元素上绑定的特定事件的所有回调,例如:
off()
适用于取消当前元素上绑定的所有事件回调,例如:
扩展阅读
代码块激活字符: mmoff
使用mui.trigger()
方法可以动态触发特定DOM元素上的事件。
示例
自动触发按钮的点击事件:
扩展阅读
代码块激活字符: mtrigger
在开发移动端的应用时,会用到很多的手势操作,比如滑动、长按等,为了方便开放者快速集成这些手势,mui内置了常用的手势事件,目前支持的手势事件见如下列表:
分类 |
参数 |
描述 |
点击 |
tap |
单击屏幕 |
doubletap |
双击屏幕 |
长按 |
longtap |
长按屏幕 |
hold |
按住屏幕 |
release |
离开屏幕 |
滑动 |
swipeleft |
向左滑动 |
swiperight |
向右滑动 |
swipeup |
向上滑动 |
swipedown |
向下滑动 |
拖动 |
dragstart |
开始拖动 |
drag |
拖动中 |
dragend |
拖动结束 |
手势事件配置
根据使用频率,mui默认会监听部分手势事件,如点击、滑动事件;为了开发出更高性能的moble App,mui支持用户根据实际业务需求,通过mui.init方法中的gestureConfig参数,配置具体需要监听的手势事件,。
注意:dragstart、drag、dragend共用drag开关,swipeleft、swiperight、swipeup、swipedown共用swipe开关
事件监听
单个元素上的事件监听,直接使用addEventListener()
即可,如下:
若多个元素执行相同逻辑,则建议使用事件绑定(on()
)。
扩展阅读
代码块激活字符: minitgesture
在App开发中,经常会遇到页面间传值的需求,比如从新闻列表页进入详情页,需要将新闻id传递过去;
Html5Plus规范设计了evalJS方法来解决该问题;
但evalJS方法仅接收字符串参数,涉及多个参数时,需要开发人员手动拼字符串;
为简化开发,mui框架在evalJS方法的基础上,封装了自定义事件,通过自定义事件,用户可以轻松实现多webview间数据传递。
监听自定义事件
添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,如下:
触发自定义事件
通过mui.fire()
方法可触发目标窗口的自定义事件:
示例
假设如下场景:从新闻列表页面进入新闻详情页面,新闻详情页面为共用页面,通过传递新闻ID通知详情页面需要显示具体哪个新闻,详情页面再动态向服务器请求数据,mui要实现类似需求可通过如下步骤实现:
-
在列表页面中预加载详情页面(假设为detail.html)
-
列表页面在点击新闻标题时,首先,获得该新闻id,触发详情页面的newsId事件,并将新闻id作为事件参数传递过去;然后再打开详情页面;
- 详情页面监听newsId自定义事件
列表页面代码如下:
详情页面代码如下:
扩展阅读
代码块激活字符: mfire
部分mui控件监听的事件无法通过
mui.trigger
触发比如无法实现自动触发mui返回图标,实现关闭当前页面的功能,该部分逻辑正在优化中