fix preventDefault for events

This commit is contained in:
Misko Hevery
2010-07-27 15:54:50 -07:00
parent 8ddee9bb25
commit 2a30a02f01
6 changed files with 28 additions and 27 deletions

View File

@@ -199,10 +199,10 @@ angularWidget("@ng:repeat", function(expression, element){
angularDirective("ng:click", function(expression, element){
return function(element){
var self = this;
element.bind('click', function(){
element.bind('click', function(event){
self.$tryEval(expression, element);
self.$root.$eval();
return false;
event.preventDefault();
});
};
});

View File

@@ -104,19 +104,12 @@ JQLite.prototype = {
eventHandler = bind[type];
if (!eventHandler) {
bind[type] = eventHandler = function(event) {
var bubbleEvent = false;
foreach(eventHandler.fns, function(fn){
bubbleEvent = bubbleEvent || fn.call(self, event);
});
if (!bubbleEvent) {
if (msie) {
event.returnValue = false;
event.cancelBubble = true;
} else {
event.preventDefault();
event.stopPropagation();
}
if (!event.preventDefault) {
event.returnValue = false;
}
foreach(eventHandler.fns, function(fn){
fn.call(self, event);
});
};
eventHandler.fns = [];
addEventListener(element, type, eventHandler);

View File

@@ -198,14 +198,15 @@ function inputWidget(events, modelAccessor, viewAccessor, initFn) {
this.$eval(element.attr('ng:init')||'');
// Don't register a handler if we are a button (noopAccessor) and there is no action
if (action || modelAccessor !== noopAccessor) {
element.bind(events, function(){
element.bind(events, function(event){
model.set(view.get());
lastValue = model.get();
scope.$tryEval(action, element);
scope.$root.$eval();
// if we have noop initFn than we are just a button,
// therefore we want to prevent default action
return initFn != noop;
if(initFn == noop)
event.preventDefault();
});
}
view.set(lastValue = model.get());