Angularjs中的customClass uib-datepicker依赖于promise

时间:2016-04-20 00:01:13

标签: javascript angularjs datepicker promise

我正在使用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。当页面加载时,它还不在控制器的范围内,因此应用程序与following error崩溃。 你能给我一个如何解决这个问题的提示吗?一种使datepicker等待承诺解决的方法。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我将“ng-if”标记用于包含div的包装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 ...}
});

我希望这可以帮到你。