실제로 정확히 사용할 수 있도록 입력 요소에 name
과 ng-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.test
에 toggle
에 대한 유효성 검사 규칙이 포함되어 있지만 이 아닌에는 해당 유효성 검사 규칙이 이름이 존재하지 않아 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
의 유효성을 확인할 수 있습니다 (해당 요소에 인라인 속성이 필요 없음).
나는 두 가지 접근법을 결합 name
및 ng-model
모두 다음 두 결과가 결합되어 사용하고 나는 내가 기대 한 것 결과를 얻는 경우에 - 나는 $scope.test.toggle
및 모델 자체가 제대로 검증되고 볼 수 있습니다.
제 질문은 왜 이것이 적절한 행동입니까? 예를 들어, jquery.validate.unobtrusive
과 다를 수 있습니다. name
속성은 본질적으로 유효성 검사 규칙을 요소에 연결하는 비트입니다.