更改最小日期时,AngularJS/AngularUI时间选择器验证错误
我正在使用来自AngularUI的timepicker控件和datepicker控件。我有一个日期,我想用两个时间选择器设置开始时间和结束时间 我的问题是,当我更改日期时,我还想更新计时器选择器的年/月/日,因为这些是我要保存的值。但是,当我这样做时,它会干扰对min(结束日期时间选择器的)的验证;如果我删除它,它就会工作,这是我无法做到的 请点击此处: 为简单起见,只需单击datepicker上的任何日期,您就会看到表单上$valid的值变为false。计时器选择器控件本身的工作原理是,它不允许您低于指定的最小值(即“开始”计时器选择器的值),但窗体无效 以下是我用来更新时间的代码:更改最小日期时,AngularJS/AngularUI时间选择器验证错误,angularjs,datepicker,angular-ui,angular-ui-bootstrap,timepicker,Angularjs,Datepicker,Angular Ui,Angular Ui Bootstrap,Timepicker,我正在使用来自AngularUI的timepicker控件和datepicker控件。我有一个日期,我想用两个时间选择器设置开始时间和结束时间 我的问题是,当我更改日期时,我还想更新计时器选择器的年/月/日,因为这些是我要保存的值。但是,当我这样做时,它会干扰对min(结束日期时间选择器的)的验证;如果我删除它,它就会工作,这是我无法做到的 请点击此处: 为简单起见,只需单击datepicker上的任何日期,您就会看到表单上$valid的值变为false。计时器选择器控件本身的工作原理是,它不
$scope.dateChanged = function() {
$log.log('Date changed to: ' + $scope.dt);
var start = new Date($scope.dt);
var end = new Date($scope.dt);
$scope.starttime = start;
$scope.endtime = end.setHours(end.getHours() + 1);
};
编辑:
查看Angular UI bootstrap.tpls.js文件后,它似乎调用:
this.render = function() {
var date = ngModelCtrl.$viewValue;
if (isNaN(date)) {
ngModelCtrl.$setValidity('time', false);
$log.error('Timepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.');
} else {
if (date) {
selected = date;
}
if (selected < min || selected > max) {
ngModelCtrl.$setValidity('time', false);
$scope.invalidHours = true;
$scope.invalidMinutes = true;
} else {
makeValid();
}
updateTemplate();
}
};
这导致它失败。不确定在我的场景中最好的解决方法是什么
$scope.$parent.$watch($parse($attrs.min), function(value) {
var dt = new Date(value);
min = isNaN(dt) ? undefined : dt;
});