한 가지 접근 방식은 모든 속성을 더티하게 만드는 것입니다. 각 컨트롤러에서 할 수 있지만 매우 지저분합니다. 일반적인 해결책이있는 것이 좋습니다.
제가 생각할 수있는 가장 쉬운 방법은
- 양식 제출 속성을 처리합니다.
- 모든 양식 필드를 반복하고 깨끗한 필드를 더티 표시합니다.
- 제출 함수를 호출하기 전에 양식이 유효한지 확인합니다.
다음은 지침입니다.
myModule.directive('submit', function() {
return {
restrict: 'A',
link: function(scope, formElement, attrs) {
var form;
form = scope[attrs.name];
return formElement.bind('submit', function() {
angular.forEach(form, function(field, name) {
if (typeof name === 'string' && !name.match('^[\$]')) {
if (field.$pristine) {
return field.$setViewValue(field.$value);
}
}
});
if (form.$valid) {
return scope.$apply(attrs.submit);
}
});
}
};
});
다음과 같이 양식 html을 업데이트하십시오.
<form ng-submit='justDoIt()'>
된다 :
<form name='myForm' novalidate submit='justDoIt()'>
여기에서 전체 예를 참조하십시오. http://plunker.co/edit/QVbisEK2WEbORTAWL7Gu?p=preview