angular bootstrap datepicker 在 dateDisabled 函数中使用 $http 请求禁用日期

angular bootstrap datepicker disable dates with $http request in dateDisabled function

所以我有 uibDatepicker 指令 (https://angular-ui.github.io/bootstrap/#datepicker),我想在其中发送日期选择器中提供的每一天的请求,用那个日期点击服务器,以及 return 是否应该禁用它。 问题是它是异步调用,而 dateDisabled 函数不处理承诺。 有什么建议吗?

<span uib-datepicker datepicker-options="datepickerOptions" ng-model="selectedDate"></span>

-

$scope.datepickerOptions: {
    dateDisabled: function (dateAndMode) {
        if (dateAndMode.mode !== "day") {
            return false;
        }
        //async call
        TimeService.getIsDateAvailable(dateAndMode.date).then(function (data) {
          //returns true or false
            return data.data;
        });
    }

我尝试了很多解决方案。我找到了这个答案:Disable dates using factory response UI Bootstrap Datepicker

但我无法将其应用到我的代码中。

您可以预加载禁用日期并将它们存储在范围变量中,然后在缓存数据中搜索当前日期。我认为这是最好的解决方案。

所以我设法通过禁用预加载日期来解决此问题。我需要的技巧是首先从日期选择器中获取所有 42 个可见日期,然后将它们传递给服务器,过滤它们并 return 返回。此外,如果我们更改月份,我们将有 42 个新的可见日期,因此我们需要再次更新禁用日期。

你可以在这个问题中看到部分getting datepicker visible dates: