当使用ng-required时,Angular-ui-bootstrap datepicker将默认日历日期设置为1969年12月31日

时间:2015-12-06 15:38:55

标签: angularjs datepicker angular-ui-bootstrap

我有一个表单,我有条件要求的datepicker元素。我无法使用任何值启动此元素,因为用户必须输入它。 Datepicker格式为dd / mm / yyyy。问题是它在我添加ng-required之前工作正常。在ng-required条件添加到元素后,当用户点击日历时,日历默认日期是1969年12月31日。对于将该日期带到当前日期的用户来说非常不方便。我尝试在datepicker选项中将默认日期设置为今天,但没有运气。

<div class="form-group col-md-3 required" ng-show="decision==true">
  <label class="control-label">Test Date</label>
  <div class="input-group">
    <input name="testDate" type="text" class="form-control" datepicker-popup="dd/MM/yyyy" ng-model="testDate" is-open="dpOpened.testDateTo"
    close-text="Close" onfocus="this.blur();" datepicker-options="dateOptions" ng-required="decision==true" required/>
    <span class="input-group-btn">
    <button type="button" class="btn btn-default" ng-click="datepickerPopup($event, 'testDateTo')">
      <i class="glyphicon glyphicon-calendar"></i>
    </button>
    </span>
  </div>
</div>

- controller.js -

$scope.datepickerPopup = function($event, opened) {
  $event.preventDefault();
  $event.stopPropagation();
  $scope.dpOpened[opened] = true;
}

$scope.dateOptions = {
  showWeeks : false,
  defaultDate : new Date()
};

$scope.dpOpened = {
  testDateTo : false,
};

$scope.today = function() {
  return new Date();
}

2 个答案:

答案 0 :(得分:0)

您将ng-model设置为testDate但我看不到您在控制器中设置的位置。尝试设置testDate = new Date()。请参阅此相关pull request

答案 1 :(得分:0)

我遇到了同样的问题。

您不应使用 new Date() 初始化 bsDatePicker 字段。您必须使用 formbuilder 中的 'null' 进行初始化,即使它是必填字段。