更改最小日期时,AngularJS/AngularUI时间选择器验证错误

更改最小日期时,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。计时器选择器控件本身的工作原理是,它不

我正在使用来自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;
  });