aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ng/rootScope.js18
-rw-r--r--test/ng/rootScopeSpec.js12
2 files changed, 27 insertions, 3 deletions
diff --git a/src/ng/rootScope.js b/src/ng/rootScope.js
index 5bd65214..bb12362b 100644
--- a/src/ng/rootScope.js
+++ b/src/ng/rootScope.js
@@ -618,6 +618,8 @@ function $RootScopeProvider(){
* - `name` - {string}: Name of the event.
* - `stopPropagation` - {function=}: calling `stopPropagation` function will cancel further event propagation
* (available only for events that were `$emit`-ed).
+ * - `preventDefault` - {function}: calling `preventDefault` sets `defaultPrevented` flag to true.
+ * - `defaultPrevented` - {boolean}: true if `preventDefault` was called.
*/
$on: function(name, listener) {
var namedListeners = this.$$listeners[name];
@@ -662,7 +664,11 @@ function $RootScopeProvider(){
event = {
name: name,
targetScope: scope,
- stopPropagation: function() {stopPropagation = true;}
+ stopPropagation: function() {stopPropagation = true;},
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
},
listenerArgs = concat([event], arguments, 1),
i, length;
@@ -712,8 +718,14 @@ function $RootScopeProvider(){
var target = this,
current = target,
next = target,
- event = { name: name,
- targetScope: target },
+ event = {
+ name: name,
+ targetScope: target,
+ preventDefault: function() {
+ event.defaultPrevented = true;
+ },
+ defaultPrevented: false
+ },
listenerArgs = concat([event], arguments, 1);
//down while you can, then up and next sibling or up and next sibling until back at root
diff --git a/test/ng/rootScopeSpec.js b/test/ng/rootScopeSpec.js
index 3faeb162..9d343b08 100644
--- a/test/ng/rootScopeSpec.js
+++ b/test/ng/rootScopeSpec.js
@@ -697,6 +697,18 @@ describe('Scope', function() {
grandChild.$emit('myEvent');
expect(event).toBeDefined();
});
+
+
+ it('should have preventDefault method and defaultPrevented property', function() {
+ var event = grandChild.$emit('myEvent');
+ expect(event.defaultPrevented).toBe(false);
+
+ child.$on('myEvent', function(event) {
+ event.preventDefault();
+ });
+ event = grandChild.$emit('myEvent');
+ expect(event.defaultPrevented).toBe(true);
+ });
});
});