>(function () { > 'use strict'; > > var app = angular.module('sysMgrApp'); > > app.directive('noDirtyCheck', [function () { > // Interacting with input elements having this directive won't cause the > // form to be marked dirty. > // http://stackoverflow.com/questions/17089090/prevent-input-from-setting-form-dirty-angularjs > return { > restrict: 'A', > require: ['^form', '^ngModel'], > > link: function (scope, element, attrs, controllers) { > var form = controllers[0]; > > var currentControl = controllers[1]; > > var formDirtyState = false; > > element[0].focus(function () { > if (form) > formDirtyState = form.$dirty; // save form's dirty state > }); > > element.bind('blur', function () { > if (currentControl) { > currentControl.$dirty = false; // Remove dirty state but keep the value > if (!formDirtyState && form) > form.$setPristine(); > > // scope.$apply(); > } > }) > } > }; > }]); >})();>
var dirty = false; >>>>angular.forEach(scope.theForm, function (value, key) { >>>> if (key[0] != '$') { >>>> if (value.$dirty) { >>>> dirty = true; >>>> } >>>> } >>>>}); >>>>if (!dirty) { >>>>scope.theForm.$setPristine(); >>>>}This will reset the form if all inputs are pristine.....
>>>require: ['^form'],>>>
var dirty = false; >> var theForm = null; >> angular.forEach(scope.theForm, function (value, key) { >> if (key == '$$parentForm') { >> theForm = value; >> } >> if (key[0] != '$') { >> if (value.$dirty) { >> dirty = true; >> } >> } >> }); >> if (!dirty) { >> theForm.$setPristine(); >> }(Uses the control to reach up to the parent form)