日期:2014-05-16  浏览次数:20359 次

ExtJs中2个常用的高级事件功能:委托(Delegation),缓冲(Buffer)

委托delegation
减低内存销毁和防止内存泄露的隐患是事件委托技术的两项好处,其基本要义是:
并不是集合内的每一个元素都要登记上事件处理器,而是在集合其容器上登记
一次便可,这样产生了中央化的一个事件处理器,然后就有不断循环该事件周
期,使得逐层上报机制付诸实现,只要在容器层面定义就可以。
这不是说要求我们在body元素挂上一个全局的事件,这会导致页面内的任何动作都会触发
那个事件,无疑很有可能会带来反效果的,我们想提升效能却会更 慢……因此,我们说,
适用的场景应该像是下拉列表、日历等等这样拥有一群元素的控件,直接或间接地体现在
一个容器身上的那么一个控件。

缓冲buffer
你在登记事件的处理器的时候可以加入配置这个选项。若指定一个毫秒数会把该处理函数
安排到Ext.util.DelayedTask延时之后才执行。如果 事件在那个事件再次触发,则原处理器
句柄将不会被启用,但是新处理器句柄会安排在其位置。
el.on('click', function(e,t) {
// 执行事件具体过程
}, this, {
buffer: 1000 // 重复响应事件以一秒为时间间隔
});