From e0ad7dfcd47196d0aa9271e84b2c4ac26cfda3f4 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 7 Apr 2010 17:24:24 -0700 Subject: seperatio validation and exception handling --- src/Angular.js | 5 ++--- src/directives.js | 7 ++++++- src/services.js | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Angular.js b/src/Angular.js index 3b5e1c90..d8b03464 100644 --- a/src/Angular.js +++ b/src/Angular.js @@ -10,7 +10,6 @@ var consoleNode, PRIORITY_WATCH = -1000, PRIORITY_LAST = 99999, NOOP = 'noop', - NG_ERROR = 'ng-error', NG_EXCEPTION = 'ng-exception', NG_VALIDATION_ERROR = 'ng-validation-error', jQuery = window['jQuery'] || window['$'], // weirdness to make IE happy @@ -259,10 +258,10 @@ function elementError(element, type, error) { } if (error) { element.addClass(type); - element.attr(NG_ERROR, error); + element.attr(type, error); } else { element.removeClass(type); - element.removeAttr(NG_ERROR); + element.removeAttr(type); } } diff --git a/src/directives.js b/src/directives.js index 5cee0978..22ff7544 100644 --- a/src/directives.js +++ b/src/directives.js @@ -80,12 +80,17 @@ angularDirective("ng-bind-template", function(expression){ }; }); +var REMOVE_ATTRIBUTES = { + 'disabled':true, + 'readonly':true, + 'checked':true +}; angularDirective("ng-bind-attr", function(expression){ return function(element){ this.$onEval(function(){ foreach(this.$eval(expression), function(bindExp, key) { var value = compileBindTemplate(bindExp).call(this, element); - if (key == 'disabled' && !toBoolean(value)) { + if (REMOVE_ATTRIBUTES[lowercase(key)] && !toBoolean(value)) { element.removeAttr('disabled'); } else { element.attr(key, value); diff --git a/src/services.js b/src/services.js index 9d60f795..291e1704 100644 --- a/src/services.js +++ b/src/services.js @@ -47,7 +47,7 @@ angularService("$location", function(browser){ angularService("$hover", function(browser) { var tooltip, self = this, error, width = 300, arrowWidth = 10; browser.hover(function(element, show){ - if (show && (error = element.attr('ng-error'))) { + if (show && (error = element.attr(NG_EXCEPTION) || element.attr(NG_VALIDATION_ERROR))) { if (!tooltip) { tooltip = { callout: jqLite('
'), -- cgit v1.2.3