feat(scope): add event.preventDefault() and event.defaultPrevented

This commit is contained in:
Vojta Jina 2012-04-27 17:31:11 +02:00
parent 91db99208e
commit 84542d2431
2 changed files with 27 additions and 3 deletions

View file

@ -618,6 +618,8 @@ function $RootScopeProvider(){
* - `name` - {string}: Name of the event. * - `name` - {string}: Name of the event.
* - `stopPropagation` - {function=}: calling `stopPropagation` function will cancel further event propagation * - `stopPropagation` - {function=}: calling `stopPropagation` function will cancel further event propagation
* (available only for events that were `$emit`-ed). * (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) { $on: function(name, listener) {
var namedListeners = this.$$listeners[name]; var namedListeners = this.$$listeners[name];
@ -662,7 +664,11 @@ function $RootScopeProvider(){
event = { event = {
name: name, name: name,
targetScope: scope, targetScope: scope,
stopPropagation: function() {stopPropagation = true;} stopPropagation: function() {stopPropagation = true;},
preventDefault: function() {
event.defaultPrevented = true;
},
defaultPrevented: false
}, },
listenerArgs = concat([event], arguments, 1), listenerArgs = concat([event], arguments, 1),
i, length; i, length;
@ -712,8 +718,14 @@ function $RootScopeProvider(){
var target = this, var target = this,
current = target, current = target,
next = target, next = target,
event = { name: name, event = {
targetScope: target }, name: name,
targetScope: target,
preventDefault: function() {
event.defaultPrevented = true;
},
defaultPrevented: false
},
listenerArgs = concat([event], arguments, 1); listenerArgs = concat([event], arguments, 1);
//down while you can, then up and next sibling or up and next sibling until back at root //down while you can, then up and next sibling or up and next sibling until back at root

View file

@ -697,6 +697,18 @@ describe('Scope', function() {
grandChild.$emit('myEvent'); grandChild.$emit('myEvent');
expect(event).toBeDefined(); 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);
});
}); });
}); });