>>(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)