如何处理在附加侦听器之前触发的事件

时间:2013-11-29 12:52:14

标签: javascript events javascript-events yui

代码触发成功ajax响应事件。由于某些原因,事件监听器在此代码之后附加在函数中。是否可以捕获已经触发的事件并在添加侦听器时处理它,或者我必须更改实现?

1 个答案:

答案 0 :(得分:1)

我很确定你不能“存储”事件,但你可以做这样的事情

var events = [],
    object = { test: 'text' };    


item.trigger('event', object);
events.push({ name: 'event', data: object });

item.listenTo('event', function( data )
{

}

// Make sure this is called after the listener is executed, 
// and only once or you will be making multiple triggers
if ( events.length > 0 )
{
    for ( i = 0; i <= events.length; i++ )
    {
        if ( events[i].name = 'event' )
        {
            item.trigger('event', events[i].data);
            events.splice(i, 1);
        }
    }
}

(尚未测试此代码)

不建议执行此操作,您应该重构代码并确保在任何触发器之前执行侦听器,因为如果不是,则代码可能出现问题。这只是糟糕的代码,你可能很容易重构,但这取决于你。