更改最小日期时AngularJS / AngularUI Timepicker验证错误

时间:2015-10-12 20:17:04

标签: angularjs datepicker angular-ui angular-ui-bootstrap timepicker

我正在使用来自AngularUI的datepicker控件的timepicker控件。我有一个日期,我想设置两个时间戳的开始和结束时间。

我的问题是,当我更改日期时,我想更新时间选择器的年/月/日,因为这些是我想要保存的值。然而,当我这样做时,它会对min的验证感到困惑(结束日期时间戳;如果我删除它,它可以工作,我无法做到)。

plnkr: http://plnkr.co/edit/HdKmbvBsSdtUBnf9ZuZd?p=preview

为简单起见,只需点击日期选择器上的任何日期,您就会在表单上看到$ valid的值变为false。 timepicker控件本身的工作原理是它不会让你低于指定的最小值(这是来自" start" timepicker的值),但表单无效。

以下是我用来更新时间的代码:

-infinity

编辑:

在查看Angular UI bootstrap.tpls.js文件之后,看起来它调用了:

$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);
      };
在这款手表发射之前

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();
    }
  };

导致它失败。不确定在我的场景中最好的解决方法是什么。

0 个答案:

没有答案