Angular UI Bootstrap DatePicker initDate问题

时间:2015-04-27 19:40:30

标签: angularjs datepicker angular-ui-bootstrap

我正在尝试在angular bootsrap的datepicker指令中设置init-date。我收到以下错误

  

错误:[$ parse:syntax]语法错误:令牌'Jun'是表达式第5列的意外标记[Sun Jun 21 2015 17:00:00 GMT-0700(PDT)]从6月21日开始2015年17:00:00 GMT-0700(PDT)]。

以下是我正在使用的标记

<div ng-controller="DatepickerDemoCtrl">
<h4>Popup</h4>
<div class="row">
    <div class="col-md-6">
        <p class="input-group">
            <input type="text"
                   class="form-control"
                   init-date="dateOptions.initDate"
                   datepicker-popup="{{format}}"
                   ng-model="dt"
                   is-open="opened"
                   min-date="dateOptions.minDate"
                   max-date="'2016-06-22'"
                   datepicker-options="dateOptions"
                   date-disabled="disabled(date, mode)"
                   ng-required="true" close-text="Close" />
          <span class="input-group-btn">
            <button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
          </span>
        </p>
    </div>
</div>

这是我现有的javascript方面

angular.module('app', ['ui.bootstrap']);
angular.module('app').controller('DatepickerDemoCtrl', function ($scope) {
    $scope.open = function($event) {
        $event.preventDefault();
        $event.stopPropagation();

        $scope.opened = true;
    };
    $scope.dateOptions = {
        formatYear: 'yy',
        startingDay: 1,
        minDate: new Date(2015, 9, 9),
        initDate: new Date('2015-06-22')
    };
    $scope.format = ['MM-dd-yyyy'];
});

不完全确定我在这里可能缺少什么......有人可以帮忙吗?

5 个答案:

答案 0 :(得分:2)

升级到最新版本0.13应解决问题...我使用的是版本0.12

希望这会有所帮助......

答案 1 :(得分:1)

从dateOptions删除minDate,maxDate修复了我的问题。

答案 2 :(得分:1)

对于那些无法更新超过0.12但必须设置最小和最大日期的人,我能够找到一种解决方法。我把选项放在范围内,如下所示。

不可否认,它很丑陋而烦人,但通过setDate()重置日期是唯一让它适用于我的东西。只是分享。将此作为最后一个选项。

var minDate = new Date(2017, 3, 27);
minDate = minDate.setDate(minDate.getDate()-0);
var maxDate = new Date();
maxDate = maxDate.setDate(maxDate.getDate()-0);

$scope.dpOptions = {
    minDate: minDate,
    maxDate: maxDate
};

答案 3 :(得分:0)

对于那些不能使用0.13的人:您可以直接将初始日期分配给模型:

module.controller[...., function(....){
    //Init
    $scope.dt = new Date();
    $scope.dt.setDate($scope.dt.getDate()-7);

 }]

答案 4 :(得分:0)

我通过将minDate和maxDate设置为毫秒来修复此问题:

minDate: new Date().getTime()

编辑:仅当使用minDate / maxDate作为选项对象的属性时,才需要将Date对象转换为毫秒。如果将其作为属性传递,则它可以保留为Date对象。