Lea*_*xxx 1 validation angularjs angularjs-directive
我正在做一个自定义验证(指令)比较两个日期,如果start_date大于end_date则显示错误...我正在通过ng-model传递start_date
ng-model="start_date"
Run Code Online (Sandbox Code Playgroud)
和end_date一起使用我的指令:
lower-than-date="{{end_date.toISOString()}}" //ignore the toISOString()
Run Code Online (Sandbox Code Playgroud)
我正在使用我的指令的输入...
<input type="text" ng-model="start_date"
datepicker-popup="yyyy-MM-dd" min="today" show-weeks="false"
lower-than-date="{{end_date.toISOString()}}"/>
Run Code Online (Sandbox Code Playgroud)
指令......
.directive("lowerThanDate", ['$parse', function($parse) {
return {
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
var lowerThan = null;
function revalidate(_val) {
var valid = _val && lowerThan ? _val < lowerThan : true;
ctrl.$setValidity('lowerThanDate', valid);
}
attrs.$observe('lowerThanDate', function(_value) {
//Here I'm detecting when end_date change
lowerThan = new Date(_value);
revalidate(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function(_value) {
revalidate(_value);
return _value;
});
}
};
}])
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,但只有在我更改end_date时才会触发验证.我想验证何时更改start_date.
因此,问题是:如何在start_date更改时"观察"ng-model值以触发验证.
注意:这是比较日期的通用指令.牢记这一点.
设置绑定到ngModel
链接功能内部:
var modelValue = $parse(attr.ngModel);
scope.$watch(modelValue, function(value) {
// validate value against endDate.
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3034 次 |
最近记录: |