2015-01-03 4 views
2

부모 ng-form의 일부인 여러 child ng-form을 가지고 있는데 부모 ng-form을 $ submitted status로 설정하면 모든 하위 폼의 $ submit 상태를 설정하고 싶습니다. 이러한 방법은 폼 컨트롤러를 사용할 수없는 현재로서는angularjs 폼 컨트롤러를 확장

here

내가 그렇게하는 방법을, 나는이 작업을 수행하는 현재 양식 컨트롤러를 확장 할 경우, 말할 수 있습니다 확인? 새 메서드 $setChildFormsToSubmittedState()을 어떻게 추가합니까? 물론 나는 각도 코드를 방해하거나 건드리지 않고 그것을하고 싶다.

가능합니까? 나는 모든 자식 폼을 부모 폼에 hook을 사용하여 지정해야한다고 생각합니다.

어디서부터 시작 해야할지 모르겠습니다.

+0

지시문을하고, 부모 양식 제출 거기에 수신기를 부착 .. – Ved

답변

4

양식 컨트롤러에 기능을 추가하는 지시문을 만들 수 있습니다. 항목에 속한 양식 객체와 동일한 속성이 $$parentForm인지 확인하여 모든 컨트롤을 반복하는 메서드를 만듭니다.

DEMO

자바 스크립트

.directive('myForm', function() { 

    return { 
     require: 'form', 
     link: function(scope, elem, attr, form) { 
     form.__setSubmitted = function() { 
      setSubmitted(form); 
     }; 

     function setSubmitted(form) { 
      form.$submitted = true; 
      angular.forEach(form, function(item) { 
      if(item && item.$$parentForm === form) { 
       setSubmitted(item); 
      } 
      }); 
     } 
     } 
    }; 

    }); 

작동

<form name="myForm" my-form ng-submit="myForm.__setSubmitted()"> 
    <ng-form name="mySubForm1"> 
    <input type="text" ng-model="data.something1" name="something"> 
    {{mySubForm1.$submitted}} 
    </ng-form> 
    <br> 

    <ng-form name="mySubForm2"> 
    <input type="text" ng-model="data.something2" name="something"> 
    {{mySubForm2.$submitted}} 
    </ng-form> 
    <br> 

    <button type="submit">Button</button> 
    {{myForm.$submitted}} 
</form> 
+0

HTML, 한 qu 에리. 왜 'angular.forEach (form,'. form이 하나의 객체인지, 왜 각각에 대해 필요합니까?) – harishr

+0

[** AngularJS docuemntation states **] (https://docs.angularjs.org/api/ng/) function/angular.forEach) :'angular.forEach', 객체 또는 배열이 될 수있는 obj 컬렉션의 각 항목에 대해 한 번 반복자 함수를 호출합니다. – ryeballar

+0

그래,'form'은 때때로 콜렉션이 될 수 있습니다. 그러므로 우리는 각각을 필요로한다. – harishr

관련 문제