mirror of
https://github.com/hiloteam/Hilo.git
synced 2026-01-18 16:04:19 +00:00
fix: eventMixin.on once bug
This commit is contained in:
parent
31834eebd3
commit
fcaebfdb3c
@ -119,14 +119,19 @@ var EventMixin = {
|
||||
|
||||
var eventListeners = listeners[eventType];
|
||||
if(eventListeners){
|
||||
eventListeners = eventListeners.slice(0);
|
||||
var eventListenersCopy = eventListeners.slice(0);
|
||||
event = event || new EventObject(eventType, this, detail);
|
||||
if(event._stopped) return false;
|
||||
|
||||
for(var i = 0; i < eventListeners.length; i++){
|
||||
var el = eventListeners[i];
|
||||
for(var i = 0; i < eventListenersCopy.length; i++){
|
||||
var el = eventListenersCopy[i];
|
||||
el.listener.call(this, event);
|
||||
if(el.once) eventListeners.splice(i--, 1);
|
||||
if(el.once) {
|
||||
var index = eventListeners.indexOf(el);
|
||||
if(index > -1){
|
||||
eventListeners.splice(index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(eventListeners.length == 0) delete listeners[eventType];
|
||||
|
||||
@ -20,6 +20,7 @@ describe('event', function(){
|
||||
|
||||
it('on once', function(){
|
||||
var firedNum = 0;
|
||||
eventTarget.on('hello', function(e){});
|
||||
eventTarget.on('hello', function(e){
|
||||
firedNum ++;
|
||||
}, true);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user