Я использую 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
я получаю от внутреннего вызова от службы. И еще не в области контроллера, когда страница загружена, поэтому приложение выходит из строя со следующей ошибкой. Не могли бы вы дать мне подсказку, как это решить? Некоторый способ заставить дампикера ждать решения обещания.
У меня была та же проблема, и я использовал тег "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 ...}
});
Я надеюсь это тебе поможет.
uib-datepicker
не связываетdatepicker-options
uib-datepicker
, она должна быть скомпилирована после формирования объекта параметров. Рассмотрите возможность использования распознавателя маршрута / состояния для извлечения данных службы.