Skip to content

Commit 2a30a02

Browse files
committed
fix preventDefault for events
1 parent 8ddee9b commit 2a30a02

6 files changed

Lines changed: 27 additions & 26 deletions

File tree

example/temp.html

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
22
<html>
33
<head>
4+
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
45
<script type="text/javascript"
56
src="../src/angular-bootstrap.js#autobind"></script>
67
</head>
78
<body ng:init="$window.$root = this">
8-
Hello {{'World'}}!
9+
<div ng:click="$window.alert('outter')">
10+
outter
11+
<div ng:click="$window.alert('inner')">inner</div>
12+
<a href="#ERROR" ng:click="$window.alert('link')">link</a>
13+
</div>
914
</body>
1015
</html>

scenario/widgets.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@
7272
</tr>
7373
<tr><th colspan="3">Buttons</th></tr>
7474
<tr>
75-
<td>ng-change<br/>ng:click</td>
75+
<td>ng:change<br/>ng:click</td>
7676
<td ng:init="button.count = 0">
7777
<form>
78-
<input type="button" value="button" ng-change="button.count = button.count + 1"/> <br/>
79-
<input type="submit" value="submit" ng-change="button.count = button.count + 1"/><br/>
80-
<input type="image" src="" ng-change="button.count = button.count + 1"/><br/>
78+
<input type="button" value="button" ng:change="button.count = button.count + 1"/> <br/>
79+
<input type="submit" value="submit" ng:change="button.count = button.count + 1"/><br/>
80+
<input type="image" src="" ng:change="button.count = button.count + 1"/><br/>
8181
<a href="" ng:click="button.count = button.count + 1">action</a>
8282
</form>
8383
</td>

src/directives.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,10 @@ angularWidget("@ng:repeat", function(expression, element){
199199
angularDirective("ng:click", function(expression, element){
200200
return function(element){
201201
var self = this;
202-
element.bind('click', function(){
202+
element.bind('click', function(event){
203203
self.$tryEval(expression, element);
204204
self.$root.$eval();
205-
return false;
205+
event.preventDefault();
206206
});
207207
};
208208
});

src/jqLite.js

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,12 @@ JQLite.prototype = {
104104
eventHandler = bind[type];
105105
if (!eventHandler) {
106106
bind[type] = eventHandler = function(event) {
107-
var bubbleEvent = false;
107+
if (!event.preventDefault) {
108+
event.returnValue = false;
109+
}
108110
foreach(eventHandler.fns, function(fn){
109-
bubbleEvent = bubbleEvent || fn.call(self, event);
111+
fn.call(self, event);
110112
});
111-
if (!bubbleEvent) {
112-
if (msie) {
113-
event.returnValue = false;
114-
event.cancelBubble = true;
115-
} else {
116-
event.preventDefault();
117-
event.stopPropagation();
118-
}
119-
}
120113
};
121114
eventHandler.fns = [];
122115
addEventListener(element, type, eventHandler);

src/widgets.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,15 @@ function inputWidget(events, modelAccessor, viewAccessor, initFn) {
198198
this.$eval(element.attr('ng:init')||'');
199199
// Don't register a handler if we are a button (noopAccessor) and there is no action
200200
if (action || modelAccessor !== noopAccessor) {
201-
element.bind(events, function(){
201+
element.bind(events, function(event){
202202
model.set(view.get());
203203
lastValue = model.get();
204204
scope.$tryEval(action, element);
205205
scope.$root.$eval();
206206
// if we have noop initFn than we are just a button,
207207
// therefore we want to prevent default action
208-
return initFn != noop;
208+
if(initFn == noop)
209+
event.preventDefault();
209210
});
210211
}
211212
view.set(lastValue = model.get());

test/directivesSpec.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,15 @@ describe("directives", function(){
160160
expect(scope.$get('count')).toEqual(1);
161161
});
162162

163-
it('should ng:click', function(){
164-
var scope = compile('<div ng:click="clicked = true"></div>');
165-
scope.$eval();
166-
expect(scope.$get('clicked')).toBeFalsy();
163+
describe('ng:click', function(){
164+
it('should fire event', function(){
165+
var scope = compile('<div ng:click="clicked = true"></div>');
166+
scope.$eval();
167+
expect(scope.$get('clicked')).toBeFalsy();
167168

168-
element.trigger('click');
169-
expect(scope.$get('clicked')).toEqual(true);
169+
element.trigger('click');
170+
expect(scope.$get('clicked')).toEqual(true);
171+
});
170172
});
171173

172174
it('should ng:class', function(){

0 commit comments

Comments
 (0)