在MUI框架中对于事件绑定与取消和监听的触发自定义的深入运用与实战

news/2024/4/23 19:50:11/文章来源:https://blog.csdn.net/weixin_57198749/article/details/127254641

事件绑定

在这里插入图片描述

除了使用addEventListener()方法侦听特定元素上的事件外,还可以使用。on()方法实现批元素的事件绑定。

event
Type: String
需监听的事件名称,例如:‘tap’
selector
Type: String
选择器
handler
Type: Function( Event event )
事件触发时的回调函数,通过回调中的event参数可以获得事件详情

点击新闻列表获取当前列表项的ID,并将ID转移到新闻详情页面,然后打开新闻详情页面

mui(".mui-table-view").on('tap','.mui-table-view-cell',function(){//获取idvar id = this.getAttribute("id");//传值给详情页面,通知加载新数据mui.fire(detail,'getDetail',{id:id});//打开新闻详情mui.openWindow({id:'detail',url:'detail.html'});
}) 

事件取消

在使用on()方法绑定事件后,如果要解除绑定,可以使用off()方法。根据不同的传入参数,off()方法具有不同的实现逻辑。

event
Type: String
需取消绑定的事件名称,例如:‘tap’
selector
Type: String
选择器
handler
Type: Function
之前绑定到该元素上的事件函数,不支持匿名函数

Off(事件、选择器、句柄)适用于取消由相应选择器上的特定事件执行的特定回调,例如:

//点击li时,执行foo_1函数
mui("#list").on("tap","li",foo_1);
//点击li时,执行foo_2函数
mui("#list").on("tap","li",foo_2);function foo_1(){console.log("foo_1 execute");
}function foo_2(){console.log("foo_2 execute");
}
//点击li时,不再执行foo_1函数,但会继续执行foo_2函数
mui("#list").off("tap","li",foo_1);

off(event,selector)适用于取消对应选择器上特定事件的所有回调,例如:

//点击li时,执行foo_1函数
mui("#list").on("tap","li",foo_1);
//点击li时,执行foo_2函数
mui("#list").on("tap","li",foo_2);function foo_1(){console.log("foo_1 execute");
}function foo_2(){console.log("foo_2 execute");
}
//点击li时,foo_2、foo_2两个函数均不再执行
mui("#list").off("tap","li");

手势事件

在开发移动应用程序时,将使用许多手势操作,如滑动、长按等。为了方便这些手势的快速集成,mui内置了常见的手势事件。当前支持的手势事件如下表所示:
在这里插入图片描述

手势事件配置

根据使用频率,mui默认会收听一些手势事件,如点击和幻灯片事件;为了开发更高性能的移动应用程序,mui支持用户通过mui中的gestureConfig参数配置要监视的手势事件。根据实际业务需要,初始化方法,。

mui.init({gestureConfig:{tap: true, //默认为truedoubletap: true, //默认为falselongtap: true, //默认为falseswipe: true, //默认为truedrag: true, //默认为truehold:false,//默认为false,不监听release:false//默认为false,不监听}
});

注意:dragstart、drag、dragend共用drag开关,swipeleft、swiperight、swipeup、swipedown共用swipe开关

事件监听

单个元素上的事件监听,直接使用addEventListener()即可,如下:

elem.addEventListener("swipeleft",function(){console.log("你正在向左滑动");
});

如果多个元素执行相同的逻辑,建议使用事件绑定(on())。

自定义事件

在应用程序开发中,我们经常需要在页面之间传递值。例如,当从新闻列表页面进入详细信息页面时,我们需要传输新闻ID;Html5Plus规范设计了evalJS方法来解决这个问题;然而,evalJS只接收字符串参数。当涉及多个参数时,开发人员需要手动拼写字符串;为了简化开发,mui框架基于evalJS方法封装自定义事件。通过自定义事件,用户可以轻松实现多个Web视图之间的数据传输。

只能在5+应用程序和流媒体应用程序中使用

因为值在多个网络视图之间传递,所以不能在移动浏览器和微信中使用;
添加自定义事件监听操作和标准js事件监听类似,可直接通过window对象添加,如下:

window.addEventListener('customEvent',function(event){//通过event.detail可获得传递过来的参数内容....
});

触发自定义事件

通过mui.fire()方法可触发目标窗口的自定义事件:

target
Type: WebviewObject
需传值的目标webview
event
Type: String
自定义事件名称
data
Type: JSON
json格式的数据

示例

假设以下场景:从新闻列表页面进入新闻详细信息页面。新闻详细信息页面是一个共享页面。通过传递新闻ID来通知详细信息页面要显示的新闻。然后,详细信息页面会动态地从服务器请求数据。为了达到类似的要求,mui可以执行以下操作:
在列表页面中预加载详细信息页面(假设为detail.html)
在列表页面点击新闻标题时,首先获取新闻ID,在详情页面触发newsId事件,并将新闻ID作为事件参数传递;然后打开详细信息页面;
详细信息页面侦听newsId自定义事件
列表页面的代码如下:

//初始化预加载详情页面
mui.init({preloadPages:[{id:'detail.html',url:'detail.html'           }]
});var detailPage = null;
//添加列表项的点击事件
mui('.mui-content').on('tap', 'a', function(e) {var id = this.getAttribute('id');//获得详情页面if(!detailPage){detailPage = plus.webview.getWebviewById('detail.html');}//触发详情页面的newsId事件mui.fire(detailPage,'newsId',{id:id});
//打开详情页面          mui.openWindow({id:'detail.html'});
});  

详情页面代码如下:

//添加newId自定义事件监听
window.addEventListener('newsId',function(event){//获得事件参数var id = event.detail.id;//根据id向服务器请求新闻详情.....
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_398812.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL集群搭建——主从同步(一主二从)

一、安装MySQL数据库 Centos7安装MySQL5.7 目前准备了三台服务器作为主从配置数据库 #主 192.168.159.100:3306 #从 192.168.159.101:3306 #从 192.168.159.102:3306二、修改主数据库配置文件 vim /etc/my.cnf #在mysqld模块中添加如下配置信息 #开启二进制日志 log-binmast…

Win10家庭版利用Hyper-V虚拟机安装Kali Linux

目录 安装Hyper-V 批处理安装 重启电脑 下载Kali镜像 Kali官网下载 Hyper-V虚拟机 创建虚拟机 启动虚拟机 安装Kali 安装前配置 磁盘分区 系统安装 登录系统 近期学习网络安全的相关内容,需要用到很多的安全工具。偶然得知Kali Linux就是专门为网络安…

SD-WAN是面向分支机构的新兴、不断发展的解决方案

在过去的二十年里,人们的工作方式发生了很大变化。共享办公空间、移动性和云现在很常见。业务分散,分支机构得到授权。 当然,这个新功能是一件好事。但是,与此同时,它提出了一个巨大的挑战:多协议标签交换(…

【潮流计算】基于matlab粒子群算法优化电力系统潮流计算【含Matlab源码 2157期】

一、粒子群算法简介 1 标准粒子群优化(PSO)算法 PSO算法根据对环境的适应度将群体中的个体移动到好的区域,将每个个体看作是D维搜索空间中的一个粒子,根据粒子本身的飞行经验和群体中其他同伴的飞行经验调整下一步飞行方向,从而搜索到最好的空间位置解。设第i个粒子的位置表示…

什么是 IoT App SDK?

目录 为什么要开发 IoT App? IoT App SDK 的优势 IoT App SDK 分类 智能生活 App SDK 商用照明 App SDK 智慧社区 App SDK 智慧居住 App SDK 行业 App SDK 其他概念 IoT 设备 通信过程 IoT 云平台 智能面板 名词解释 涂鸦 IoT App SDK 是专为物联网移…

沉睡者IT:你理解的元宇宙是怎样呢?

这半年来关于元宇宙的话题成为了一场舆论的热点,很多即使是从事与其毫无相关职业的人,也多少有些耳闻。 ​ 编辑 但是对于元宇宙,它是什么,为什么需要元宇宙,怎样才能建立元宇宙以及大家对元宇宙的看法,…

Hack The Box靶机——Ambassador

文章目录前言一、Web部分二、提权部分前言 难度:中等,Hack The Box网站在线靶机。本文涉及知识点有:Grafana系统任意文件读取,CURL下载文件,SSL本地端口转发,Consul命令执行。 靶机地址:1…

【windows kernel源码分析】对初学者友好的底层理解,让你对计算机内核不再迷茫

文章目录🍃概念梳理windows kernel引导加载程序完成后的RAM内容🍑实现过程--还是看原文吧 🌸参考原文链接对市面上的文章再做一次整合。给渴望得到内核知识的人提供一些帮助。 🍃博主昵称:一拳必胜客 博主主页面链接&a…

各种平均值:算术平均值,几何平均值,调和平均值等

平均值概述 平均数反映了一组数据的一般水平,最常见的平均数是算术平均数,除了算数平均数外,还有几何平均数,调和平均数,加权平均数等。 算术平均值(Arithmetic Mean) 公式解读:表…

list全部功能模拟实现

目录&#xff1a; list的深度剖析及模拟实现 list底层是双向循环链表 ------而实现list最重要的就是迭代器类的实现 下面我们会重点学习迭代器 list整体接口函数罗列 //模拟实现list底层---全部功能 namespace std {//结点类模拟实现template<class T>struct list_node…

java数据结构-------栈和队列

文章目录1、栈(Stack)1、什么是栈2、栈中常使用的方法3、栈的应用场景1、逆序打印链表2、有效的括号2、队列(Queue)1、什么是队列2、队列的使用3、循环队列目标&#xff1a;1、 栈的概念及使用&#xff0c;2、 队列的概念及使用&#xff0c;3.、相关OJ题1、栈(Stack) 1、什么是…

FISCO BCOS(十五)——— Windows下的go环境配置及beego环境配置并解决bee run报错问题

1、下载地址 https://golang.google.cn/dl/2、双击打开下载的文件&#xff0c;一路按照默认点击下一步&#xff0c;&#xff08;安装位置可选&#xff0c;默认安装在c盘&#xff09; 3、go环境配置&#xff08;很重要的&#xff09; 在系统变量名中新建变量名&#xff1a;GOP…

Java如何生成花里胡哨的二维码

目录一、序言二、找资料1、寻觅文档2、寻觅代码三、代码示例1、简单的二维码2、带颜色的二维码3、带logo的二维码四、工具类封装一、序言 之前在做头马演讲俱乐部哼哈官可视化汇报报告时&#xff0c;为了方便大家移动端查看可视化报告&#xff0c;而不是通过点击链接这种生硬的…

Android 面试java知识小结

1.-1的二进制是多少&#xff0c;怎么算出来的&#xff1f; 1111 1111 在计算机里是以补码的形式存在的&#xff0c;那为什么要使用补码呢&#xff1f; 计算机中的有符号数有三种表示方法&#xff0c;即原码、反码和补码。三种表示方法均有符号位和数值位两部分&#xff0c;符号…

如何使用界面控件DevExpress WinForms自带的UI模板?其实很简单

DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜任…

科研工具总结

科研工具总结 1、论文检索网站2、自己收集数据集----并构建数据集2.1数据集来演方式:3种3、怎么进行一个算法的调研?泛读论文:精读论文:1、论文检索网站 Connected papers:一个基于知识图谱的论文检索网站 特点:圆圈的半径越大表示论文越经典,引用数量比较多; 论文的新…

python与人工智能:KNN近邻法识别手写数字

机器学习分类&#xff1f; 1 特征&#xff08;feature&#xff09; 数据是区分事物和事物的关键。 举例&#xff1a;不同类型的书&#xff0c;我们用书的内容来对它进行分类 2 标签&#xff08;label&#xff09; 数据的标签&#xff0c;显示的分类结果。 举例&#xff1a;书属…

每日面试题2道、算法两道

目录 一、 面试题 i、i的自增问题 写一个Singleton实例 二、数组 算法 寻找数组的中心索引 搜索插入位置 一、 面试题 i、i的自增问题 /*** packageName: com.sofwin.mianshi* user: wentao* date: 2022/10/10 14:31* email 1660420659qq.com* description: i、i的 面…

(附源码)计算机毕业设计SSM志愿者活动管理平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

pytorch:本地使用tensorboard可视化

摘要&#xff1a; tensorboard是tensorflow用来可视化训练和测试过程的模块&#xff0c;而pytorch并没有可视化模块&#xff0c;但是pytoch1.2.0版本以上开始支持tensorboard。 目录一、 安装tensorboard二、 使用tensorboard1、首先导入模块&#xff1a;2、初始化&#xff1a;…