반응형
angularjs에서 입력[type=file]로 폼을 검증하는 방법
HTML:
<form name="form">
<input type="file" ng-model="document" valid-file required>
<input type="submit" value="{{ !form.$valid && 'invalid' || 'valid' }}">
</form>
입력[type=file] 변경 내용을 수신하는 사용자 지정 지시어:
myApp.directive('validFile',function(){
return {
require:'ngModel',
link:function(scope,el,attrs,ngModel){
//change event is fired when file is selected
el.bind('change',function(){
scope.$apply(function(){
ngModel.$setViewValue(el.val());
ngModel.$render();
});
});
}
};
});
파일을 선택하면 콘솔에 다음과 같은 오류가 나타납니다.
오류: InvalidStateError: DOM Exception 11 오류:사용할 수 없거나 더 이상 사용할 수 없는 개체를 사용하려고 시도했습니다.
plunkr로 시도해 보십시오: http://plnkr.co/edit/C5j5e0JyMjt9vUopLDHc?p=preview
지시어가 없으면 입력 파일 필드의 상태가 형식으로 푸시되지 않습니다.달러 valid.이 오류가 발생하는 이유와 해결 방법을 알고 있습니까?
NgModelController 참조.$render()
보기를 업데이트해야 할 때 호출됩니다.ng-model 명령의 사용자가 이 방법을 구현할 것으로 예상됩니다.
$render()를 구현해야 호출할 수 있습니다.당신은 이런 것을 할 수 있습니다.
myApp.directive('validFile', function () {
return {
require: 'ngModel',
link: function (scope, el, attrs, ngModel) {
ngModel.$render = function () {
ngModel.$setViewValue(el.val());
};
el.bind('change', function () {
scope.$apply(function () {
ngModel.$render();
});
});
}
};
});
AngularJS 1.2.x로 업데이트한 후 스니펫이 더 이상 제대로 작동하지 않는 것처럼 보이고 파일 입력이 선택한 파일 값과 맞지 않아 양식을 사용할 수 없습니다.명령어를 원래 명령어로 다시 변경하고 삭제합니다.ngModel.$render()매력적으로 보입니다.
.directive('validFile', function () {
return {
restrict: 'A',
require: '?ngModel',
link: function (scope, el, attrs, ngModel) {
el.bind('change', function () {
scope.$apply(function () {
ngModel.$setViewValue(el.val());
});
});
}
};
언급URL : https://stackoverflow.com/questions/18383446/how-to-validate-form-with-inputtype-file-in-angularjs
반응형
'programing' 카테고리의 다른 글
| 중력 양식에서 요소의 이름 속성 변경 (0) | 2023.10.24 |
|---|---|
| if-else 문을 XSLT에서 어떻게 구현합니까? (0) | 2023.10.24 |
| C에서 변수 이름 뒤에 콜론 (0) | 2023.10.24 |
| 왜 sns로 sea born을 수입합니까? (0) | 2023.10.24 |
| 야생 비행에 전쟁 배치 19 (0) | 2023.10.24 |