码迷,mamicode.com
首页 > 其他好文 > 详细

Events模块

时间:2014-07-13 21:25:43      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:http   数据   width   cti   io   代码   

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

 bubuko.com,布布扣

bubuko.com,布布扣

Events模块,布布扣,bubuko.com

Events模块

标签:http   数据   width   cti   io   代码   

原文地址:http://www.cnblogs.com/hellohuman/p/3840816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!