AngularJS Bootstrap-datepicker弹出窗口在第一次单击时显示错误的日期

时间:2016-08-01 15:31:40

标签: angularjs datepicker bootstrap-datepicker

我正在使用Date函数初始化模型并将其绑定到具有日期选择器的输入。

a.c

首次点击时,即使实际日期不同,日期选择器也会显示当前日期 。 然后再次单击输入时,datepicker-popup将重置为正确的日期

我试过了:

  • 使用<label>Begin Date</label> <div class='input-group date'> <input ng-model="Main.BeginDate" class="form-control" onkeydown="return false" datepicker-popup="MM/dd/yyyy" show-weeks="false" is-open="BeginDate" ng-focus="BeginDate=true" ng-click="BeginDate=true" min-date="Main.MinDate" required/> <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div>
  • 格式化日期
  • 自定义$filter功能
  • 删除new Date()属性

如何让弹出窗口显示绑定到模型的日期?

我正在使用:

  • AngularJS v1.5.0
  • Bootstrap v3.3.6
  • Angular-ui-bootstrap版本:0.13.4

首先点击------&gt;&gt;&gt;&gt;&gt; enter image description here

第二次点击-----&gt;&gt;&gt;&gt; enter image description here

2 个答案:

答案 0 :(得分:1)

我检查了这种情况,看起来你正在使用的版本有点冲突。如果我使用角度1.4.9或更低,并尝试你的代码似乎都工作。这是一个plunker来向您展示。但是一旦我使用1.5.0或更高的角度,我就会遇到与你相同的问题。您可以使用角度1.4.9和angular-ui-bootstrap 0.13.4或升级角度ui引导版本。

index.html

angular.module('app', ['ui.bootstrap']);
angular.module('app').controller('DateCtrl', function ($scope) {

$scope.today = function(){
  $scope.dt = new Date(1998,1,5)
}
$scope.today();
});

<强> example.js

{{1}}

答案 1 :(得分:1)

如@Amit所述,问题似乎是由于库版本之间的不兼容性。

根据提到的here错误,添加atttribute init-date的解决方案有效。

<input ng-model="dt" class="form-control" 
        onkeydown="return false" datepicker-popup="MM/dd/yyyy" show-weeks="false" 
        is-open="BeginDateOpen" ng-focus="BeginDateOpen=true" ng-click="BeginDateOpen=true" 
        min-date="Main.MinDate" required
        init-date="dt"/>

这是plunker