2015-04-27 78 views
6

我正在尝试在angular bootsrap的datepicker指令中设置init-date。而且我提示以下错误:Angular UI Bootstrap DatePicker initDate问题

Error: [$parse:syntax] Syntax Error: Token 'Jun' is an unexpected token at column 5 of the expression [Sun Jun 21 2015 17:00:00 GMT-0700 (PDT)] starting at [Jun 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']; 
}); 

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

+0

我觉得Angular试图将一个字符串解析为一个javascript表达式,就像错误说的那样。但是从你提供的代码,哪个指令或属性导致这一点还不清楚。 –

回答

2

升级到0.13最新版本应该可以解决这个问题......我用的版本0.12

希望这有助于...

+0

修复了我的问题。谢谢! – bodagetta

+0

我无法更新。其他解决方案? –

0

对于那些,谁不能使用0.13:您可以分配的init日期直接到模型:

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

}] 
+0

这并没有解决我的问题。 –

1

从dateOptions删除minDate,maxDate解决了我的问题。

0

对于那些无法更新超过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 
};