2014-10-06 1 views
9

실제로 정확히 사용할 수 있도록 입력 요소에 nameng-model을 모두 지정해야하는 이유가 궁금합니다. 다음에 예를 들어 은 :AngularJS에서 입력시 이름과 ng-model을 모두 지정해야하는 이유는 무엇입니까?

<form name='test'> 
     <div> 
      <input type='radio' 
       value='create-new' 
       ng-model='toggle' 
       required /> 

      <input type='radio' 
       value='use-existing' 
       ng-model='toggle' 
       required /> 
     </div> 
     <div ng-switch='test.$invalid'> 
      <div ng-switch-when='true'>Invalid!</div> 
      <div ng-switch-when='false'>Valid!</div> 
     </div> 
    </form> 

내가 라디오 버튼을 선택하지 않을 때 출력 Invalid!을 얻을 것 - 이것은 올바른 동작입니다. 그러나이 모델에 액세스 할 수있는 유일한 방법은 $scope.toggle입니다. 요소 자체는 $scope.test (양식 컨테이너) 내부의 이름으로 참조 할 수 없습니다. $scope.testtoggle에 대한 유효성 검사 규칙이 포함되어 있지만 이 아닌에는 해당 유효성 검사 규칙이 이름이 존재하지 않아 toggle에 속한다는 것을 알리는 방법이 있습니다.

우리가 주위의 입력에 이름 속성을 넣어 전환한다면 :

<form name='test'> 
     <div> 
      <input type='radio' 
       value='create-new' 
       name='toggle' 
       required /> 

      <input type='radio' 
       value='use-existing' 
       name='toggle' 
       required /> 
     </div> 
     <div ng-switch='test.$invalid'> 
      <div ng-switch-when='true'>Invalid!</div> 
      <div ng-switch-when='false'>Valid!</div> 
     </div> 
    </form> 

그리고 우리의 의지는 항상 내가 입력 자체가 필요하다고 언급 한 경우에도 유효 보여 하단에 ng-switch. 또한 toggle$scope.test 내부에 표시되므로 $scope.test.toggle의 유효성을 확인할 수 있습니다 (해당 요소에 인라인 속성이 필요 없음).

나는 두 가지 접근법을 결합 nameng-model 모두 다음 두 결과가 결합되어 사용하고 나는 내가 기대 한 것 결과를 얻는 경우에 - 나는 $scope.test.toggle 모델 자체가 제대로 검증되고 볼 수 있습니다.

제 질문은 왜 이것이 적절한 행동입니까? 예를 들어, jquery.validate.unobtrusive과 다를 수 있습니다. name 속성은 본질적으로 유효성 검사 규칙을 요소에 연결하는 비트입니다.

답변

14

name 속성은 당신이 각도로 검증하지 않을 경우

당신이 다음 바인딩되지 않은 경우 name

을하지 않는 사용하지 않아도, 바인딩 각도 검증, ng-model에 사용됩니다 ng-model

클라이언트 측에서는 각도가 필요하고 구속력이 필요하다면

관련 문제