我正在做一个自定义的验证(指令)来比较两个日期,显示错误,如果起始日期比END_DATE更大...... 我传递起始日期通过NG-模型检测NG模型变化成指令
ng-model="start_date"
日期和结束日期与我的指令:
lower-than-date="{{end_date.toISOString()}}" //ignore the toISOString()
,我用我的指令输入...
<input type="text" ng-model="start_date"
datepicker-popup="yyyy-MM-dd" min="today" show-weeks="false"
lower-than-date="{{end_date.toISOString()}}"/>
该指令......
.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;
});
}
};
}])
此代码工作正常,但验证时,我改变END_DATE时才会触发。我想验证何时也更改start_date。
所以,问题是:如何在“start_date”更改时“观察”ng模型值以触发验证。
注意: 这是一个通用指令来比较日期。记住这一点。
我相信你应该能够观察ctrl属性或ctrl的子属性中的一个来查找模型。 –