Angular JS UI启动日期选择器:最大日期和初始日期问题
Angular JS UI Bootstrap Datepicker: max-date and init date issue
我度过了多么美好的一天。。。无论如何,我一直在协助一些同事进行AngularJS项目,但无论如何,有太多错误。。。我使用的是AngularJS UI Bootstrap Datepicker版本0.11.2和AngularJS版本1.3。到目前为止,一切都很好,但我希望将最短日期设置为从当天起2个月,最长日期设置为自当天起6个月,初始日期设置为距当天起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">
有人知道我哪里错了吗?
需要注意的是,您的日期在这里发生了变化:
var today = new Date(),
twoMonth = today.setMonth(today.getMonth() + 2),
sixMonth = today.setMonth(today.getMonth() + 6);
每个setMonth
调整原始日期。因此,八个月的问题。
后一个问题是由twoMonth
和sixMonth
是数字这一事实引起的。我认为你的指令需要日期,所以用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.
相关文章:
- 高位/高位股票无效日期问题
- 浏览器之间的Javascript日期问题
- 使用setMonth时出现Javascript日期问题
- Parse.com 日期问题使用javascript
- JavaScript 日期问题 - 0 变成 1
- 时区的JavaScript日期问题
- JavaScript日期加上一些日期问题
- JavaScript和php中的日期问题很奇怪
- JavaScript 中的日期问题
- JS:使用引导日期选择器在视图模式“月”中出现结束日期问题
- java脚本日期对象中的UK日期问题
- JavaScript日期问题应显示无效日期的错误
- 跨日期选取器默认日期问题
- Angular JS UI启动日期选择器:最大日期和初始日期问题
- 完整日历日单击并删除了时区更改的事件日期问题
- 应用程序脚本日期问题
- 多个浏览器中JS中的日期问题
- Firefox中的日期问题
- 安卓模拟器的javascript日期问题
- javascript的奇怪日期问题