나는 유형 = 모델에 바인딩 '이메일'입력 다음과 같은 간단한 양식이 있습니다ng-model을 undefined로 설정하면 양식/입력이 다시 유효하지 않게되는 이유는 무엇입니까?
<div ng-app>
<h2>Clearing ng-model</h2>
<div ng-controller="EmailCtrl">
<form name="emailForm" ng-submit="addEmail()">
<input type="email" name="email" ng-model="userEmail" placeholder="[email protected]">
<span ng-show="emailForm.email.$invalid && emailForm.email.$dirty">invalid email</span>
<span ng-show="emailForm.$invalid">form invalid!</span>
</form>
<br/>
<button ng-click="clearViaUndefined()">clear via undefined</button>
<button ng-click="clearViaNull()">clear via null</button>
<button ng-click="clearViaEmptyString()">clear via empty string</button>
</div>
</div>
사용자가 잘못된 이메일을 입력하지만, 다음은 '취소'버튼을 클릭 가정 ... 그래서 양식의 요구를 재설정해야합니다.
'취소'버튼의 ng-click 처리기에서 모델의 값을 'undefined'로 설정하면 입력 요소의 $ valid 속성이 true로 변경되지 않습니다 (해당 양식의 경우도 마찬가지 임) .
function EmailCtrl($scope) {
$scope.clearViaUndefined = function() {
$scope.userEmail = undefined;
};
$scope.clearViaNull = function() {
$scope.userEmail = null;
};
$scope.clearViaEmptyString = function() {
$scope.userEmail = "";
};
}
모델의 값을 빈 문자열 ""또는 null로 설정하면 $ valid 속성은 다시 true로 설정됩니다.
왜 이런가요? 하나 $viewValue
등이다
http://jsfiddle.net/U3pVM/12830/
문제가 보이지 않습니다. 모든 버튼이 입력 양식을 삭제합니다 ... (Chrome). – mgilson
양식의 $ 유효 상태를 '거짓'에서 '참'으로 다시 설정하려고하기 때문에 잘못된 이메일을 입력하는 경우에만 문제가됩니다. 올바른 이메일을 입력하면 $ 유효한 값은 다음과 같습니다. 이미 '사실'- 희망이 맞는 말입니다. – JTech