Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 6e63501

Browse files
committed
feat(scope): scope.$emit/$broadcast return the event object, add cancelled property
1 parent eb92735 commit 6e63501

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/service/scope.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -585,12 +585,12 @@ function $RootScopeProvider(){
585585
$emit: function(name, args) {
586586
var empty = [],
587587
namedListeners,
588-
canceled = false,
589588
scope = this,
590589
event = {
591590
name: name,
592591
targetScope: scope,
593-
cancel: function() {canceled = true;}
592+
cancel: function() {event.cancelled = true;},
593+
cancelled: false
594594
},
595595
listenerArgs = concat([event], arguments, 1),
596596
i, length;
@@ -601,14 +601,16 @@ function $RootScopeProvider(){
601601
for (i=0, length=namedListeners.length; i<length; i++) {
602602
try {
603603
namedListeners[i].apply(null, listenerArgs);
604-
if (canceled) return;
604+
if (event.cancelled) return event;
605605
} catch (e) {
606606
$exceptionHandler(e);
607607
}
608608
}
609609
//traverse upwards
610610
scope = scope.$parent;
611611
} while (scope);
612+
613+
return event;
612614
},
613615

614616

@@ -662,6 +664,8 @@ function $RootScopeProvider(){
662664
}
663665
}
664666
} while ((current = next));
667+
668+
return event;
665669
}
666670
};
667671

test/service/scopeSpec.js

+21
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,18 @@ describe('Scope', function() {
658658
child.$emit('abc', 'arg1', 'arg2');
659659
});
660660

661+
662+
it('should return event object with cancelled property', function() {
663+
child.$on('some', function(event) {
664+
event.cancel();
665+
});
666+
667+
var result = grandChild.$emit('some');
668+
expect(result).toBeDefined();
669+
expect(result.cancelled).toBe(true);
670+
});
671+
672+
661673
describe('event object', function() {
662674
it('should have methods/properties', function() {
663675
var event;
@@ -752,6 +764,15 @@ describe('Scope', function() {
752764
$rootScope.$broadcast('fooEvent');
753765
expect(log).toBe('');
754766
}));
767+
768+
769+
it('should return event object', function() {
770+
var result = child1.$broadcast('some');
771+
772+
expect(result).toBeDefined();
773+
expect(result.name).toBe('some');
774+
expect(result.targetScope).toBe(child1);
775+
});
755776
});
756777

757778

0 commit comments

Comments
 (0)