我一直在这一天...无论如何,我一直在帮助一些同事使用AngularJS项目而且错误很多,无论如何......我正在使用AngularJS UI Bootstrap Datepicker版本0.11.2使用AngularJS 1.3版。到目前为止,我希望将当天的最短日期设定为2个月,最长日期为当天的六个月,初始日期为当天的2个月。这就是我到目前为止所做的:
查看
<div data-datepicker
data-ng-model="dt"
data-min-date="minDate"
data-max-date="maxDate"
data-max-mode="day"
data-show-weeks="false"
data-starting-day="1"
data-year-range="2"
class="custom-date-picker"></div>
并在我的控制器中......
var today = new Date(),
twoMonth = today.setMonth(today.getMonth() + 2),
sixMonth = today.setMonth(today.getMonth() + 6);
$scope.today = function() {
$scope.minDate = twoMonth;
$scope.maxDate = sixMonth;
};
$scope.today();
这一切都发现但是我注意到minDate
是正确的,maxDate
实际上是将来8个月,当我在指令中添加以下内容以设置初始日期时所以(注意data-init-date="minDate"
)
<div data-datepicker
data-ng-model="dt"
data-init-date="minDate"
data-min-date="minDate"
data-max-date="maxDate"
data-max-mode="day"
data-show-weeks="false"
data-starting-day="1"
data-year-range="2"
class="custom-date-picker"></div>
我收到以下错误!
TypeError: undefined is not a function
at e._refreshView (js/vendor/angular/ng-ui-bootstrap-tpls-0.11.2.min.js:8:16705)
at refreshView (js/vendor/angular/ng-ui-bootstrap-tpls-0.11.2.min.js:8:13968)
at link (js/vendor/angular/ng-ui-bootstrap-tpls-0.11.2.min.js:8:17848)
at B (js/vendor/angular/angular-1.3.0-beta.18.min.js:55:369)
at js/vendor/angular/angular-1.3.0-beta.18.min.js:62:378
at g (js/vendor/angular/angular-1.3.0-beta.18.min.js:48:105)
at js/vendor/angular/angular-1.3.0-beta.18.min.js:47:233
at js/vendor/angular/angular-1.3.0-beta.18.min.js:49:54
at Object.r [as transclude] (js/vendor/angular/angular-1.3.0-beta.18.min.js:52:497)
at js/vendor/angular/angular-1.3.0-beta.18.min.js:215:316 <table role="grid" aria-labelledby="{{uniqueId}}-title" aria-activedescendant="{{activeDateId}}" ng-switch-when="day" tabindex="0">
有谁知道我哪里出错了?
答案 0 :(得分:2)
请务必注意,您的日期会在此变异:
var today = new Date(),
twoMonth = today.setMonth(today.getMonth() + 2),
sixMonth = today.setMonth(today.getMonth() + 6);
每个setMonth
调整原始日期。因此八个月的问题。
后一个问题是由twoMonth
和sixMonth
是数字引起的。我认为你的指令需要Dates,所以用new Date(...)
包装它们。
我认为这样的事情应该有效:
var twoMonth = offsetMonths(2);
var sixMonth = offsetMonths(6);
function offsetMonths(offset) {
var ret = new Date();
ret.setMonth(ret.getMonth() + offset);
return new Date(ret);
}
当然,你可以使用像moment.js这样的东西来简化事情。