diff --git a/src/directives/field.js b/src/directives/field.js index 66147d3f2..fcee48342 100644 --- a/src/directives/field.js +++ b/src/directives/field.js @@ -161,12 +161,20 @@ angular.module('schemaForm').directive('sfField', // It looks better with dot notation. scope.$on( 'schemaForm.error.' + form.key.join('.'), - function(event, error, validationMessage, validity) { + function(event, error, validationMessage, validity, formName) { + // validationMessage and validity are mutually exclusive + formName = validity; if (validationMessage === true || validationMessage === false) { validity = validationMessage; validationMessage = undefined; } + // If we have specified a form name, and this model is not within + // that form, then leave things be. + if(formName != undefined && scope.ngModel.$$parentForm.$name !== formName) { + return; + } + if (scope.ngModel && error) { if (scope.ngModel.$setDirty) { scope.ngModel.$setDirty(); diff --git a/src/services/decorators.js b/src/services/decorators.js index 1aa0987bd..eeaaf8d57 100644 --- a/src/services/decorators.js +++ b/src/services/decorators.js @@ -229,12 +229,20 @@ angular.module('schemaForm').provider('schemaFormDecorators', // It looks better with dot notation. scope.$on( 'schemaForm.error.' + form.key.join('.'), - function(event, error, validationMessage, validity) { + function(event, error, validationMessage, validity, formName) { + // validationMessage and validity are mutually exclusive + formName = validity; if (validationMessage === true || validationMessage === false) { validity = validationMessage; validationMessage = undefined; } + // If we have specified a form name, and this model is not within + // that form, then leave things be. + if(formName != undefined && scope.ngModel.$$parentForm.$name !== formName) { + return; + } + if (scope.ngModel && error) { if (scope.ngModel.$setDirty) { scope.ngModel.$setDirty();