2015-01-20 4 views
0

내 페이지에서 양식을 재설정하는 기능이 설정되었습니다. '재설정'버튼을 클릭하면 .$setPristine()이 양식으로 표시되고 title, address, phonelinks 개의 입력란이 삭제됩니다.각도 : 리셋 양식 기능

문제는 실제로 그 페이지에 다른 입력 필드가있는 몇 가지 양식이 있습니다.

몇 가지 리셋 기능을 쓰는 대신 더 일반적인 리셋 기능을 만들면 궁금합니다. 실행하면 양식이 .$setPristine()으로 설정되고 모든 필드가 재설정됩니까?

이 문제에 대한 도움을 주시면 감사하겠습니다. 미리 감사드립니다! 그것의에

답변

0

더 좋은 방법은 상태

myApp.directive('resetDirective', [ '$parse', function ($parse) { 
    return function(scope, element, attr) { 
     var fn = $parse(attr.resetDirective); 
     var masterModel = angular.copy(fn(scope)); 

     // Error check to see if expression returned a model 
     if (!fn.assign) { 
      throw Error('Expression is required to be a model: ' + attr.resetDirective); 
     } 

     element.bind('reset', function (event) { 
      scope.$apply(function() { 
       fn.assign(scope, angular.copy(masterModel)); 
       scope.form.$setPristine(); 
      }); 

      if (event.preventDefault) { 
       return event.preventDefault(); 
      } 
      else { 
       return false; 
      } 
     }); 
    }; 
}]); 

작업 초기 JS Fiddle

+0

내 버튼은 다음과 같이겠습니까?'<버튼 NG가 클릭 = "resetDirective을 선언하고 양식을 복원하는 데 사용하는 것입니다 재설정 – realph

+1

하지만 그는 모든 필드 $ scope.myModel = {foo : '', bar : '}}에 대한 기본값도 정의해야합니다. – micha