gpt4 book ai didi

javascript - Angular JS UI Bootstrap Datepicker : max-date and init date issue

转载 作者:行者123 更新时间:2023-11-30 17:13:46 25 4
gpt4 key购买 nike

我度过了多么美好的一天……无论如何,我一直在协助一些同事完成 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>

在我的 Controller 中...

 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 实际上是 future 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 调整原始日期。因此,八个月的问题。

后一个问题是由 twoMonthsixMonth 是数字引起的。我认为你的指令需要日期,所以用 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 - Angular JS UI Bootstrap Datepicker : max-date and init date issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com