비슷한 제출 양식이있는 프로젝트에서 작업 중이므로 일부 필드를 지시문으로 이동하기로했습니다.AngularJs가 지시문의 입력 필드를 사용하여 양식의 유효성을 검사합니다.
양식 예 :
<div loading class="col-sm-12" ng-controller="Controller">
<form name="myForm" role="form" novalidate>
<fieldset class="lines-header-border">
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">Date</label>
<div class="col-sm-7">
<date-field
model="myModel"
date-picker-options="datePickerOptions"
for-name="date"
for-ng-class="myForm.date.$invalid"
is-required="true"/>
</div>
<div class="col-sm-4">
<input class="form-control"
name="amount"
ng-model="amount"
ng-class="{ 'has-error' : myForm.amount.$invalid }"
required/>
</div>
</div>
</fieldset>
</form>
</div>
날짜 필드 지시자 :
.directive('dateField', function() {
return {
restrict: 'E',
replace: true,
scope: {
model: '=',
datePickerOptions: '=',
isRequired: '@',
forName:'@',
forNgClass: '&'
},
template: '<input ui-date="datePickerOptions" type="date" name="{{forName}}" class="form-control" ng-model="model" ng-class="{ \'has-error\' : forNgClass()}" ng-required="isRequired"/>'
};
});
검증 문제 제출에 : 다른 필드는 버튼 클릭을 제출 양식에 확인하지만,이 날짜 도착 필드가 없습니다. 나는 문제가 for-ng-class="myForm.date.$invalid"
에 있다고 생각한다.
제안 사항?
답장을 보내 주셔서 감사합니다. 그러나 내가 보았 듯이'name = "myDate"'를 템플릿에 추가했습니다. 'name = "forName"'을 사용할 수 있습니까? 따라서 전달 된 필드 이름을 참조하고 하드 코딩 된 필드 이름은 참조하지 않습니다. – kuldarim
불행히도 Angular는 입력 요소의 name 속성을 동적으로 생성 할 수 없습니다. 내 대답과 온라인 데모를 업데이트했습니다. 어쩌면 중첩 된 양식을 사용하여 문제를 해결할 수 있습니다. – Chickenrice
조언을 주셔서 감사합니다. 귀하의 제안을 사용하는 것이 좋습니다. 그러나 지금은 더 작은 코드 복잡성을 위해 하드 코드 된 이름을 사용할 것이라고 생각합니다. – kuldarim