node event中 on emit off 的封装
2024-08-31 17:33:19
事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式
key:val 因为函数有多个 所以val选用数组
事件仓库
eventList = {
key:val,
key:val
}
let eventList = {};
1.绑定事件
on(eventName,cb){}
第一步判断当前事件是否存在 如果不存在 初始化一下 key:[] 然后在将cb push到数据中去即可
const $on=(eventName,cb)=>{ if(!eventList[eventName]){
eventList[eventName] = [];
}
eventList[eventName].push(cb)
}
2.触发事件
emit(eventName,params){}
第一步判断事件名称是否存在 如果存在 遍历数组中的所有函数调用即可 如果params存在 将params传递函数中
const $emit = (eventName,params)=>{ if(eventList[eventName]){
let arr = eventList[eventName];
arr.map((cb)=>{
cb(params)
})
}
}
3.解绑事件
off(eventName,cb){}
第一步判断事件名称是否存在 如果存在 再次判断第二个参数是否存在 如果存在将这个cb从当前数组中移除
如果第二个参数不存在 清空数据
const $off = (eventName,cb)=>{
if(eventList[eventName]){
if(cb){
let index = eventList[eventName].indexOf(cb);
eventList[eventName].splice(index,1); }else{
eventList[eventName].length = 0; }
}
}
最新文章
- [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)
- 【WCF全析(二)】--服务配置部署详解
- paramiko模块
- codevs1004四子连棋[BFS 哈希]
- Excel 使用宏批量修改单元格内指定文字为红字
- Python变量作用域(一)
- run a Freight robot (3)
- 删除utorrent广告栏
- Quiz 6b Question 7————An Introduction to Interactive Programming in Python
- 在 Windows Server 2008 R2 上安装 IIS 7.5
- HTML学习笔记 css定位(静态,相对,固定,绝对布局)偏移案例 第十二节 (原创) 参考使用表
- J2EE进阶(十九)FileNotFoundException: http://hibernate.org/dtd/hibernate-mapping-3.0.dtd
- 主线程中也不绝对安全的 UI 操作
- Java8新特性之二:方法引用
- Security注解:@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
- MyBatis别名与util类技能了解
- 美国运营商推送假5G图标:用户当场蒙圈了
- Eclipse导出WAR包
- WCF、WebAPI、WCFREST、WebService之间的区别总结(实用)
- 第五章 二叉树(e4)层次遍历
热门文章
- 使用UltraEdit配置多行注释和取消多行注释
- 配置Xcode版本控制SVN详细步骤内含解决Xcode/Mac OS10.8无法配置SVN的解决方法
- FFmpeg的HEVC解码器源码简单分析:解码器主干部分
- Eclipse怎么导入外来项目
- 42.cnpm不是内部命令的解决方案:配置环境变量
- js---跨域的问题
- Inversion of Control Containers and the Dependency Injection pattern--Martin Fowler
- CHARINDEX,REPLACE,LEFT+四大系统函数+模糊查询
- 微信小程序从零开始开发步骤(一)搭建开发环境
- 利用ArcGIS水文分析工具提取河网