diff options
| author | Misko Hevery | 2010-04-07 14:13:10 -0700 |
|---|---|---|
| committer | Misko Hevery | 2010-04-07 14:13:10 -0700 |
| commit | 6ea1ac7b05a4079bcda0356e095703d36ccdf6b3 (patch) | |
| tree | ce5fd6f406a2311e2b2dbaf06d3263ef3b18b42f /src | |
| parent | ee327a1f4f75f57c2a2c6166520c092d4942ffe0 (diff) | |
| download | angular.js-6ea1ac7b05a4079bcda0356e095703d36ccdf6b3.tar.bz2 | |
added $invalidWidget service
Diffstat (limited to 'src')
| -rw-r--r-- | src/Widgets.js | 7 | ||||
| -rw-r--r-- | src/services.js | 15 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/Widgets.js b/src/Widgets.js index 8e668c8f..703fb376 100644 --- a/src/Widgets.js +++ b/src/Widgets.js @@ -22,7 +22,8 @@ function valueAccessor(scope, element) { var validatorName = element.attr('ng-validate') || NOOP, validator = compileValidator(validatorName), required = element.attr('ng-required'), - lastError; + lastError, + invalidWidgets = scope.$invalidWidgets || {markValid:noop, markInvalid:noop}; required = required || required === ''; if (!validator) throw "Validator named '" + validatorName + "' not found."; function validate(value) { @@ -30,6 +31,10 @@ function valueAccessor(scope, element) { if (error !== lastError) { elementError(element, NG_VALIDATION_ERROR, error); lastError = error; + if (error) + invalidWidgets.markInvalid(element); + else + invalidWidgets.markValid(element); } return value; } diff --git a/src/services.js b/src/services.js index 173cee98..9d60f795 100644 --- a/src/services.js +++ b/src/services.js @@ -87,3 +87,18 @@ angularService("$hover", function(browser) { } }); }, {inject:['$browser']}); + +angularService("$invalidWidgets", function(){ + var invalidWidgets = []; + invalidWidgets.markValid = function(element){ + var index = indexOf(invalidWidgets, element); + if (index != -1) + invalidWidgets.splice(index, 1); + }; + invalidWidgets.markInvalid = function(element){ + var index = indexOf(invalidWidgets, element); + if (index === -1) + invalidWidgets.push(element); + }; + return invalidWidgets; +}); |
