AngularJS doğrulama modelini Bootstrap form doğrulama ekranı ile birleştirmeye çalışıyorum.Bootstrap ve AngularJS ile form doğrulaması
- Kullanıcı boş bir form yüklerse, formun hemen hata mesajını görüntülemesini istemiyorum. Kullanıcının formla etkileşime girmesini beklemek istiyorum.
- Bir kullanıcı formu doldurulmayan alanları doldurduysa, bir hata mesajı görüntülemek istiyorum.
- Bir kullanıcı alana yazmaya başladığında, hata iletilerinin hemen gösterilmesini istiyorum.
yüzden myForm.<fieldName>.$touched
yanı sıra myForm.$submitted
, myForm.<fieldName>.$dirty
kontrol etmeliyiz. Ancak, çok az sayıda varyasyonla çoğaltılan kodlar yapar.
Bu sorunu gidermek için bir yönerge oluşturmaya çalıştım ancak bu karmaşıklığı doğru bir şekilde sarmalamanın doğru yolunu bulamıyorum.
HTML:
<div class="form-group required" ng-class="{ 'has-error': myForm.firstname.$invalid && (myForm.firstname.$dirty || myForm.$submitted || myForm.firstname.$touched) }">
<label for="firstname" class="control-label" translate>Profile.FirstName</label>
<input type="text" class="form-control" id="firstname" name="firstname" required ng-model="vm.profile.firstName"/>
<p class="help-block" ng-if="myForm.firstname.$error.required" translate>Forms.Default.Required</p>
</div>
Bütün ng-class
niteliğini alıp daha özlü bir şey tarafından değiştirmek istiyorum. yönerge nedenle bu denenmiş gitmek yolu gibi görünüyordu:
(function(){
'use strict';
angular.module('app')
.directive('hasError', [function(){
return {
restrict: 'A',
scope: {
form: '=bsForm',
control: '=bsControl'
},
link: function(scope, element){
scope.$watch('form', function(){
var isInvalid = scope.control.$invalid && scope.control.$dirty;
element.toggleClass('has-error', isInvalid);
});
}
};
}]);
})();
Kullanımı:
<div class="form-group required" has-error bs-form="myForm" bs-control="myForm.firstname">
...
</div>
ancak form
özellikleri değişince ferahlatıcı değildi bu.
Neyi eksik?