在 angular-bootstrap-datetimepicker 中禁用未来日期

disable future dates in angular-bootstrap-datetimepicker

我无法禁用未来日期。

使用angular-bootstrap-datetimepicker

<datetimepicker data-ng-model="user.join_date" data-datetimepicker-config="{ startView:'day', minView:'day' }"    />

尝试在指令的 DateObject() 中添加 this.future = false; 但没有成功...

编辑

发现我可以使用 before-render 然后为将来的日期制作 selectable=false;

正在努力实施。

感谢您的帮助!

完成了。

使用 beforeRender 功能并禁用未来日期与当前日期比较 utcDateValue

代码如下:

$scope.beforeRender = function ($dates) {
    /* disable future dates */
    for(var i=0; i<$dates.length;i++) {
       if(new Date().getTime() < $dates[i].utcDateValue) {
          $dates[i].selectable = false;
       }
    }                
};

也添加了data-before-render="beforeRender($dates)"

<datetimepicker data-ng-model="user.join_date" data-datetimepicker-config="{ startView:'day', minView:'day' }" data-before-render="beforeRender($dates)" />

只允许未来

我需要稍微复杂一点的完全相反的要求,只允许将来的日期你需要考虑参数 $view

Javascript:

$scope.futureOnlyBeforeRender = function($view, $dates) {
// $view values: year, month, day, hour, minute
var currentDate = new Date();
// set the current date according to the view
switch($view){
    case 'year': currentDate.setYear(currentDate.getYear() - 1); break;
    case 'month': currentDate.setMonth(currentDate.getMonth() - 1); break;
    case 'day': currentDate.setDate(currentDate.getDate() - 1); break;
    case 'hour': currentDate.setHours(currentDate.getHours() - 1); break;
    case 'minute': currentDate.setMinutes(currentDate.getMinutes() - 1); break;
}
// apply ot the dates
$dates.filter(function (date) {
    return date.utcDateValue < currentDate.getTime();
}).forEach(function (date) {
    date.selectable = false;
})

};

HTML:

data-before-render="futureOnlyBeforeRender($view, $dates)"