aboutsummaryrefslogtreecommitdiffstats
path: root/src/widgets.js
diff options
context:
space:
mode:
authorMisko Hevery2010-04-08 13:43:40 -0700
committerMisko Hevery2010-04-08 13:43:40 -0700
commitc4ef1f2fdd73bdaeda879e596d3d96e4e68cb6fd (patch)
tree3fc1943a4599a764aef9a41d995246bb0e48f463 /src/widgets.js
parente0ad7dfcd47196d0aa9271e84b2c4ac26cfda3f4 (diff)
downloadangular.js-c4ef1f2fdd73bdaeda879e596d3d96e4e68cb6fd.tar.bz2
tests failing jstd to show cory
Diffstat (limited to 'src/widgets.js')
-rw-r--r--src/widgets.js12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/widgets.js b/src/widgets.js
index e89e8ca4..faa60043 100644
--- a/src/widgets.js
+++ b/src/widgets.js
@@ -22,16 +22,20 @@ function valueAccessor(scope, element) {
var validatorName = element.attr('ng-validate') || NOOP,
validator = compileValidator(validatorName),
required = element.attr('ng-required'),
- lastError,
+ lastError, lastVisible,
invalidWidgets = scope.$invalidWidgets || {markValid:noop, markInvalid:noop};
required = required || required === '';
if (!validator) throw "Validator named '" + validatorName + "' not found.";
function validate(value) {
- var error = required && !trim(value) ? "Required" : validator({state:scope, scope:{get:scope.$get, set:scope.$set}}, value);
- if (error !== lastError) {
+ var error = required && !trim(value) ?
+ "Required" :
+ validator({state:scope, scope:{get:scope.$get, set:scope.$set}}, value),
+ visible = isVisible(element);
+ if (error !== lastError || visible !== lastVisible) {
elementError(element, NG_VALIDATION_ERROR, error);
lastError = error;
- if (error)
+ lastVisible = visible;
+ if (error && visible)
invalidWidgets.markInvalid(element);
else
invalidWidgets.markValid(element);