mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-25 14:23:43 +00:00
fix preventDefault for events
This commit is contained in:
parent
8ddee9bb25
commit
2a30a02f01
6 changed files with 28 additions and 27 deletions
|
|
@ -1,10 +1,15 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
|
||||||
<script type="text/javascript"
|
<script type="text/javascript"
|
||||||
src="../src/angular-bootstrap.js#autobind"></script>
|
src="../src/angular-bootstrap.js#autobind"></script>
|
||||||
</head>
|
</head>
|
||||||
<body ng:init="$window.$root = this">
|
<body ng:init="$window.$root = this">
|
||||||
Hello {{'World'}}!
|
<div ng:click="$window.alert('outter')">
|
||||||
|
outter
|
||||||
|
<div ng:click="$window.alert('inner')">inner</div>
|
||||||
|
<a href="#ERROR" ng:click="$window.alert('link')">link</a>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
||||||
|
|
@ -72,12 +72,12 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr><th colspan="3">Buttons</th></tr>
|
<tr><th colspan="3">Buttons</th></tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>ng-change<br/>ng:click</td>
|
<td>ng:change<br/>ng:click</td>
|
||||||
<td ng:init="button.count = 0">
|
<td ng:init="button.count = 0">
|
||||||
<form>
|
<form>
|
||||||
<input type="button" value="button" ng-change="button.count = button.count + 1"/> <br/>
|
<input type="button" value="button" ng:change="button.count = button.count + 1"/> <br/>
|
||||||
<input type="submit" value="submit" ng-change="button.count = button.count + 1"/><br/>
|
<input type="submit" value="submit" ng:change="button.count = button.count + 1"/><br/>
|
||||||
<input type="image" src="" ng-change="button.count = button.count + 1"/><br/>
|
<input type="image" src="" ng:change="button.count = button.count + 1"/><br/>
|
||||||
<a href="" ng:click="button.count = button.count + 1">action</a>
|
<a href="" ng:click="button.count = button.count + 1">action</a>
|
||||||
</form>
|
</form>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
||||||
|
|
@ -199,10 +199,10 @@ angularWidget("@ng:repeat", function(expression, element){
|
||||||
angularDirective("ng:click", function(expression, element){
|
angularDirective("ng:click", function(expression, element){
|
||||||
return function(element){
|
return function(element){
|
||||||
var self = this;
|
var self = this;
|
||||||
element.bind('click', function(){
|
element.bind('click', function(event){
|
||||||
self.$tryEval(expression, element);
|
self.$tryEval(expression, element);
|
||||||
self.$root.$eval();
|
self.$root.$eval();
|
||||||
return false;
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -104,19 +104,12 @@ JQLite.prototype = {
|
||||||
eventHandler = bind[type];
|
eventHandler = bind[type];
|
||||||
if (!eventHandler) {
|
if (!eventHandler) {
|
||||||
bind[type] = eventHandler = function(event) {
|
bind[type] = eventHandler = function(event) {
|
||||||
var bubbleEvent = false;
|
if (!event.preventDefault) {
|
||||||
foreach(eventHandler.fns, function(fn){
|
event.returnValue = false;
|
||||||
bubbleEvent = bubbleEvent || fn.call(self, event);
|
|
||||||
});
|
|
||||||
if (!bubbleEvent) {
|
|
||||||
if (msie) {
|
|
||||||
event.returnValue = false;
|
|
||||||
event.cancelBubble = true;
|
|
||||||
} else {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
foreach(eventHandler.fns, function(fn){
|
||||||
|
fn.call(self, event);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
eventHandler.fns = [];
|
eventHandler.fns = [];
|
||||||
addEventListener(element, type, eventHandler);
|
addEventListener(element, type, eventHandler);
|
||||||
|
|
|
||||||
|
|
@ -198,14 +198,15 @@ function inputWidget(events, modelAccessor, viewAccessor, initFn) {
|
||||||
this.$eval(element.attr('ng:init')||'');
|
this.$eval(element.attr('ng:init')||'');
|
||||||
// Don't register a handler if we are a button (noopAccessor) and there is no action
|
// Don't register a handler if we are a button (noopAccessor) and there is no action
|
||||||
if (action || modelAccessor !== noopAccessor) {
|
if (action || modelAccessor !== noopAccessor) {
|
||||||
element.bind(events, function(){
|
element.bind(events, function(event){
|
||||||
model.set(view.get());
|
model.set(view.get());
|
||||||
lastValue = model.get();
|
lastValue = model.get();
|
||||||
scope.$tryEval(action, element);
|
scope.$tryEval(action, element);
|
||||||
scope.$root.$eval();
|
scope.$root.$eval();
|
||||||
// if we have noop initFn than we are just a button,
|
// if we have noop initFn than we are just a button,
|
||||||
// therefore we want to prevent default action
|
// therefore we want to prevent default action
|
||||||
return initFn != noop;
|
if(initFn == noop)
|
||||||
|
event.preventDefault();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
view.set(lastValue = model.get());
|
view.set(lastValue = model.get());
|
||||||
|
|
|
||||||
|
|
@ -160,13 +160,15 @@ describe("directives", function(){
|
||||||
expect(scope.$get('count')).toEqual(1);
|
expect(scope.$get('count')).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should ng:click', function(){
|
describe('ng:click', function(){
|
||||||
var scope = compile('<div ng:click="clicked = true"></div>');
|
it('should fire event', function(){
|
||||||
scope.$eval();
|
var scope = compile('<div ng:click="clicked = true"></div>');
|
||||||
expect(scope.$get('clicked')).toBeFalsy();
|
scope.$eval();
|
||||||
|
expect(scope.$get('clicked')).toBeFalsy();
|
||||||
|
|
||||||
element.trigger('click');
|
element.trigger('click');
|
||||||
expect(scope.$get('clicked')).toEqual(true);
|
expect(scope.$get('clicked')).toEqual(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should ng:class', function(){
|
it('should ng:class', function(){
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue