Events模块
Events模块
Events模块
Events模块
 Events模块
      Events模块
     Events模块
    Events模块
一、关于on、trigger
(1)、on、trigger是观察者模式的实现。各观察者注册主题数据的监听,当主题数据发生变化时,各观察者执行自己的回调,处理业务逻辑。
(2)、on实现原理
Events模块
Events模块
示例:dataModel.on('dataChange', function(){});
on方法内部为dataModel创建对象属性_events,数据结构为 {eventType : [callbackFunList]} 为不同的类型的自定义事件维护一个回调函数列表。通过on方法将对应的回调push到对应的列表。
需要注意的是,on方法在将回调push到对应的列表时,并没有判断该回调函数的指针在列表中是否已经存在,示例:
Events模块
Events模块
以上的实力代码将会打印两次:repeat repeat repeat repeat!
 
(3)、trigger实现原理
Events模块
 
Events模块
Events模块
Events模块
示例:dataModel.trigger('dataChange', {columnId : 1});
访问dataModel的属性_events,根据事件类型(dataChange)取出回调函数列表,循环执行列表中的回调函数。通过数组保证执行顺序与绑定顺序的一致性。
最后我们看一下139邮箱云邮局我的报刊模块的模型层的_events对象:
Events模块
Events模块
(4)、once实现原理。通过once绑定的事件,执行一次后就被销毁。
Events模块
Events模块

 Events模块

Events模块

相关文章:

  • 2023-02-21
  • 2022-12-23
  • 2022-12-23
  • 2023-03-17
  • 2021-06-04
  • 2021-06-06
  • 2021-12-10
猜你喜欢
  • 2021-12-26
  • 2021-06-07
  • 2022-12-23
  • 2021-10-26
  • 2022-12-23
  • 2021-08-24
  • 2021-11-07
相关资源
相似解决方案