8
我有下面的指令,我就把在使用角度的UI自舉日期選擇器輸入字段:更新,從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字段沒有被觸及(即使它有數據,例如當我編輯資源時),表單也不會提交。即使提交了一個好日期,它基本上將該表格計爲無效。這個指令解決了這個問題,但是當我將角度升級到1.3時,指令不再起作用。
我需要更改以使此指令再次運行?
您是否還升級了angular-ui? – charlietfl
究竟什麼不行?控制檯中的任何錯誤?創建一些簡單的重新生成你的問題。 –
正如我所說我的表單不會提交,因爲它被視爲無效(即使它是有效的,只有它不被觸動)。 至於angular-ui,最新的版本是角1.2,所以沒有1.3的版本。 – user2352164