деактивирайте бъдещи дати в angular-bootstrap-datetimepicker

Не мога да деактивирам бъдещи дати.

Използване на angular-bootstrap-datetimepicker

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

Опитах да добавя this.future = false; вътре DateObject() на директива без никакъв успех...

РЕДАКТИРАНЕ

Открих, че мога да използвам before-render и след това да направя selectable=false; за бъдещи дати.

Опитвайки се да приложа.

Благодаря за всяка помощ!


person Fahad Khan    schedule 16.11.2015    source източник


Отговори (2)


Направих го.

Използвана функция 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)" />
person Fahad Khan    schedule 17.11.2015

Позволете само бъдеще

Имах нужда от точно обратното изискване, което е малко по-сложно, за да позволите само бъдеща дата, трябва да вземете предвид аргумента $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)"
person Vespucci75fr    schedule 16.01.2018