如何在 Angular JS 中设置 ng-valid-parse
How the ng-valid-parse is set in Angular JS
我有一个格式化日期的指令。输入格式错误时应该return ng-invalid 等错误信息。现在它可以在这种情况下设置 ng-invalide,但如果输入格式错误,它也会设置 ng-valid-parse。在我看来,由于格式错误,它是无效的。
所以我的问题来了:ng-valid-parse 是如何设置的?
myDirectives.directive('myDateFormat', function ($window) {
'use strict';
return {
require: 'ngModel',
restrict: 'A',
link: function (scope, elm, attrs, ctrl) {
// other codes ...
ctrl.$parsers.unshift(function (viewValue) {
var date = moment(viewValue, dateFormat);
if(date && date.isValid()){
return date.toDate();
}else{
ctrl.$setValidity('myDateFormat', false);
return ""; // or it should return false here?
}
});
}
};
});
谢谢!
向 ngModelController 添加自定义解析验证器:
ctrl.$validators.parse = function(modelValue, viewValue){
return (modelValue instanceof Date)&&!isNaN(modelValue.getTime());
}
当我在 5 个月后回顾我的问题时,我发现了这个类似的问题 。
即使我将有效性设置为 false : ctrl.$setValidity('myDateFormat', false);
,但是 $parsers
return 一个 非未定义的 对象。这意味着解析有效,因此设置了ng-valid-parse
。
我有一个格式化日期的指令。输入格式错误时应该return ng-invalid 等错误信息。现在它可以在这种情况下设置 ng-invalide,但如果输入格式错误,它也会设置 ng-valid-parse。在我看来,由于格式错误,它是无效的。
所以我的问题来了:ng-valid-parse 是如何设置的?
myDirectives.directive('myDateFormat', function ($window) {
'use strict';
return {
require: 'ngModel',
restrict: 'A',
link: function (scope, elm, attrs, ctrl) {
// other codes ...
ctrl.$parsers.unshift(function (viewValue) {
var date = moment(viewValue, dateFormat);
if(date && date.isValid()){
return date.toDate();
}else{
ctrl.$setValidity('myDateFormat', false);
return ""; // or it should return false here?
}
});
}
};
});
谢谢!
向 ngModelController 添加自定义解析验证器:
ctrl.$validators.parse = function(modelValue, viewValue){
return (modelValue instanceof Date)&&!isNaN(modelValue.getTime());
}
当我在 5 个月后回顾我的问题时,我发现了这个类似的问题
即使我将有效性设置为 false : ctrl.$setValidity('myDateFormat', false);
,但是 $parsers
return 一个 非未定义的 对象。这意味着解析有效,因此设置了ng-valid-parse
。