customClass в Angularjs UIB-DatePicker зависит от обещания

0

Я использую Angularjs UI bootstap datepicker и пытаюсь установить пользовательские классы в течение определенных дней, как показано на примере на предоставленной странице

это часть контроллера шахты

var vm = this;
...
vm.dateOptions = {
        customClass: getTestDaysClass;
};
...
function getTestDaysClass(data) {
    var date = data.date,
        mode = data.mode;
    if (mode === 'day') {
        var dayToCheck = new Date(date).setHours(0,0,0,0);
        for (var i = 0; i < vm.testDays.length; i++) {
            var currentDat = new Date(vm.testDays[i].date).setHours(0,0,0,0);
            if (dayToCheck === currentDat) {
                return vm.testDays[i].status;
            }
        }
    }
    return '';
}

И HTML

<uib-datepicker 
        datepicker-options="user.dateOptions">
</uib-datepicker>

Проблема в том, что массив vm.testDays я получаю от внутреннего вызова от службы. И еще не в области контроллера, когда страница загружена, поэтому приложение выходит из строя со следующей ошибкой. Не могли бы вы дать мне подсказку, как это решить? Некоторый способ заставить дампикера ждать решения обещания.

  • 0
    Поскольку директива uib-datepicker не связывает datepicker-options uib-datepicker , она должна быть скомпилирована после формирования объекта параметров. Рассмотрите возможность использования распознавателя маршрута / состояния для извлечения данных службы.
Теги:
datepicker
promise

1 ответ

1
Лучший ответ

У меня была та же проблема, и я использовал тег "ng-if" в div-оболочке с переменной, которая изменила ее значение на true, когда у меня были даты.

В html:

<div ng-if="calendarLoaded">
    <uib-datepicker ng-model="dt" class="well well-sm" datepicker-options="options"></uib-datepicker>
</div>

В моей директиве:

$scope.calendarLoaded = false;
$http.get(...)
.then(function(response)
{
  $scope.calendarLoaded = true;
  {... other code here ...}
});

Я надеюсь это тебе поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню