2014-06-20 3 views
0

간단한 양식의 유효성을 검사하기 위해 AngularJS Validation을 사용하려고하지만 에 input이 더러운 지 여부에 따라 올바른 클래스를 표시하는 데 문제가 있습니다. 그런 다음 페이지의 실제 HTML을 보면 <form> 태그가 문서에 전혀 표시되지 않습니다. AngularJS 양식이 HTML 형식이 아닙니다.

<form novalidate name="infoForm"> 
      <p>To start, provide some basic information about the project.</p> 

       <ul class="ulFormGeneral"> 
        <li> 
         <label>Company name</label> 
         <input id="CompanyName" ng-class="{ cvError : infoForm.CompanyName.$dirty }" ng-model="form.CompanyName" name="CompanyName" maxlength="100" type="text" required /> 
        </li> 
       </ul> 


      </form> 

나는 그것이 더러운 경우 cvError 클래스는이 input에 추가하고 싶은,하지만 난 브라우저에서 볼 때 아무 반응이 없습니다. <form>이 DOM을 떠나고 Angular식이 작동하지 않는 것은 무엇입니까?

+0

이 문제와 관련된 바이올린을 업로드 할 수 있습니까? .. 합법적 인 것 같아. – GabrielG

답변

0

각도 세계에 오신 것을 환영합니다. 양식 필요 없음! 여기 모델은 왕이다. 문제가있는 것처럼 보입니다. ng-modelng-class은 다른 위치에있는 지점입니다.

<input id="CompanyName" ng-class="{ cvError : form.CompanyName.$dirty }" ng-model="form.CompanyName" name="CompanyName" maxlength="100" type="text" required /> 

ng-model$scope에 결합 : form.CompanyName에서

포인트 다 (그 가정은 모델 이름이 $ 범위에서 형태입니다). 입력 필드를 변경하면 $ scope에서 자동으로 업데이트됩니다. 양식을 제출하거나 제출 버튼을 눌러 데이터를 가져 오지 마십시오. $ 범위는 각 키 스트로크마다 업데이트됩니다.

controller은 모델의 변경 사항을 처리하는 작업을 수행해야합니다. 예를 들어 컨트롤러를 정의한 함수를 실행하는 버튼에 ng-click을 추가하여 모델을 저장할 수 있습니다.

+0

나는 양방향 바인딩을 완전히 이해한다. 나는 Angular가 당신의'

'태그를 꺼내는 것을 막 알지 못했을 것입니다. 'infoForm.CompanyName. $ valid'을 인쇄하려 할 때'infoForm'이 정의되지 않은 이유는 아직 모르겠습니다. –

+0

각도는 태그에 특별한 일을하지 않습니다. 그것이 염려되는 한 그것은 정상적인 마크 업입니다. – mguymon

+0

그건 맞지 않아. "form.CompanyName"에 액세스하려면 $ scope의 모델 이름이 아닌 "form"이 * form * 이름이어야합니다. – GabrielG

관련 문제