diff options
| -rw-r--r-- | src/service/scope.js | 10 | ||||
| -rw-r--r-- | test/service/scopeSpec.js | 21 |
2 files changed, 28 insertions, 3 deletions
diff --git a/src/service/scope.js b/src/service/scope.js index 4abf96f1..9b9e9215 100644 --- a/src/service/scope.js +++ b/src/service/scope.js @@ -585,12 +585,12 @@ function $RootScopeProvider(){ $emit: function(name, args) { var empty = [], namedListeners, - canceled = false, scope = this, event = { name: name, targetScope: scope, - cancel: function() {canceled = true;} + cancel: function() {event.cancelled = true;}, + cancelled: false }, listenerArgs = concat([event], arguments, 1), i, length; @@ -601,7 +601,7 @@ function $RootScopeProvider(){ for (i=0, length=namedListeners.length; i<length; i++) { try { namedListeners[i].apply(null, listenerArgs); - if (canceled) return; + if (event.cancelled) return event; } catch (e) { $exceptionHandler(e); } @@ -609,6 +609,8 @@ function $RootScopeProvider(){ //traverse upwards scope = scope.$parent; } while (scope); + + return event; }, @@ -662,6 +664,8 @@ function $RootScopeProvider(){ } } } while ((current = next)); + + return event; } }; diff --git a/test/service/scopeSpec.js b/test/service/scopeSpec.js index cc3f93f5..c3a09cc8 100644 --- a/test/service/scopeSpec.js +++ b/test/service/scopeSpec.js @@ -658,6 +658,18 @@ describe('Scope', function() { child.$emit('abc', 'arg1', 'arg2'); }); + + it('should return event object with cancelled property', function() { + child.$on('some', function(event) { + event.cancel(); + }); + + var result = grandChild.$emit('some'); + expect(result).toBeDefined(); + expect(result.cancelled).toBe(true); + }); + + describe('event object', function() { it('should have methods/properties', function() { var event; @@ -752,6 +764,15 @@ describe('Scope', function() { $rootScope.$broadcast('fooEvent'); expect(log).toBe(''); })); + + + it('should return event object', function() { + var result = child1.$broadcast('some'); + + expect(result).toBeDefined(); + expect(result.name).toBe('some'); + expect(result.targetScope).toBe(child1); + }); }); |
