mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-20 12:21:52 +00:00
feat(scope): add event.preventDefault() and event.defaultPrevented
This commit is contained in:
parent
91db99208e
commit
84542d2431
2 changed files with 27 additions and 3 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue