У меня есть следующие директивы, которые я ставлю на поля ввода, которые используют угловую-UI-самозагрузки DatePicker:Обновление углового от 1,2 до 1,3 сломал мою директиву
angular.module('directives.validators.date', [])
.directive('validDate',[ '$filter', function ($filter) {
return {
restrict:'A',
require:'ngModel',
link: function (scope, el, attrs, ngModel) {
var pattern = /^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d$/;
ngModel.scope = scope;
ngModel.attrs = attrs;
el.on('blur',function() {
if(typeof ngModel.$viewValue === "object"){
var str = $filter('date')(ngModel.$viewValue, "dd.MM.yyyy");
ngModel.$setViewValue(str);
}
if(ngModel.$viewValue){
if(ngModel.$viewValue!=="" && !pattern.test(ngModel.$viewValue)){
ngModel.$setValidity("date",false);
}
}
});
scope.$watch(function() {
return ngModel.$modelValue;
},
function() {
if(ngModel.$pristine){ //if the data has just been fetched, convert it to date format.
if (typeof ngModel.$viewValue === "number"){
var date = new Date(ngModel.$viewValue);
//var str = $filter('date')(date, "dd.MM.yyyy");
ngModel.$setViewValue(date);
ngModel.$setPristine(true);
var formName = $("form")[0].name;
ngModel.scope[formName].$setPristine(true);
ngModel.$setValidity("date",true);
}
}
if(ngModel.$viewValue){ //when the filed is changed, if it is corrected set that the date is valid
if(ngModel.$viewValue==="" || pattern.test(ngModel.$viewValue)){
ngModel.$setValidity("date",true);
}
}
});
}
};
}]);
У меня была проблема с компонентом Datepicker, что мой форма не будет отправлена, если поле datepicker не было затронуто (даже если в нем были данные, например, когда я отредактировал ресурс). Он в основном считал форму недействительной, даже если была отправлена хорошая дата. Эта директива зафиксировала это, но когда я обновил свою угловую форму до 1.3, директива больше не работает.
Что мне нужно изменить, чтобы снова включить эту директиву?
Вы также модернизировали угловое ui? – charlietfl
Что именно не работает? Любые ошибки в консоли? Создайте простой плункер, который воспроизводит вашу проблему. –
Как я уже сказал, моя форма не будет отправляться, потому что она считается недействительной (хотя она действительна, только ее не трогают). Что касается угловой ui, последняя версия предназначена для углового 1.2, поэтому до версии 1.3 пока нет. – user2352164