【发布时间】:2014-07-27 20:32:10
【问题描述】:
如果日期已经有 3 个或更多事件,我正在尝试禁用连接到 Google 日历的 UI Bootstrap Datepicker 中的日期。
到目前为止,我使用这样的 Angular 工厂获取事件数组:
gardenpage.factory('Dates', function($http, $q) {
var deffered = $q.defer();
var data = [];
var Dates = {};
Dates.async = function() {
$http.get('http://localhost:7777/events')
.success(function (d) {
data = d;
deffered.resolve();
});
return deffered.promise;
};
Dates.data = function() { return data; };
return Dates;
});
日期列表需要更多的预处理,所以我有一个函数可以将唯一具有 3 个或更多条目的日期放入范围变量中:
$scope.occurences = ['2014-07-21','2014-07-28'];
现在这是我修改后的默认 UI Bootstrap 日期选择器日期禁用功能:
// Disable weekend selection
$scope.disabled = function(date, mode) {
return ( mode === 'day' && ( date.getDay() === 0 || date.getDay() === 6 ||
$scope.date_occurences.indexOf( $filter('date')(date, 'yyyy-MM-dd') ) !== -1 ));
};
它按预期工作,除了一个小怪癖,当日期选择器调用“禁用”函数时,数组为空,等待我假设的异步回调。这就是为什么当我在日期选择器中选择一个日期时它是第一个,因为我的日期被禁用了。
那么如何在调用日期选择器禁用函数之前获取回调,或者如何让它等待?一种替代方法可能是在回调到达后刷新 Datepicker,但我不确定日期选择器上是否存在该函数。
【问题讨论】:
标签: angularjs datepicker angular-ui-bootstrap