Javascript 角度引导日期选择器在dateDisabled函数中使用$http请求禁用日期
所以我有uibDatepicker指令(),我想在其中发送datepicker中提供的每一天的请求,用那个日期点击服务器,然后返回是否应该禁用它。 问题在于它是异步调用,dateDisabled函数不处理承诺。 有什么建议吗Javascript 角度引导日期选择器在dateDisabled函数中使用$http请求禁用日期,javascript,angularjs,angular-ui-bootstrap,angular-ui,bootstrap-datepicker,Javascript,Angularjs,Angular Ui Bootstrap,Angular Ui,Bootstrap Datepicker,所以我有uibDatepicker指令(),我想在其中发送datepicker中提供的每一天的请求,用那个日期点击服务器,然后返回是否应该禁用它。 问题在于它是异步调用,dateDisabled函数不处理承诺。 有什么建议吗 <span uib-datepicker datepicker-options="datepickerOptions" ng-model="selectedDate"></span> 我尝试了很多解决方案。我找到了这个答案: 但我无法将此应用于我的
<span uib-datepicker datepicker-options="datepickerOptions" ng-model="selectedDate"></span>
我尝试了很多解决方案。我找到了这个答案:
但我无法将此应用于我的代码。您可以预加载禁用的日期并将其存储在范围变量中,然后在缓存数据中搜索当前日期。我认为这是最好的解决方案。所以我设法用禁用的预加载日期修复了这个问题。我需要的技巧是首先从datepicker获取所有42个可见日期,然后将它们传递到服务器,过滤并返回。此外,如果我们更改月份,我们将有新的42个可见日期,因此我们需要再次更新禁用的日期 您可以在此问题中看到获取datepicker可见日期的部分步骤:
我考虑过这个解决方案,但我有两个问题1。我的搜索取决于某个资源正在执行某些工作,因此如果我们更改资源,则日期应该更新,因此我无法预加载该2。如果客户每月变动怎么办?我需要在接下来的2年内禁用日期…在服务器端要做的事情很重,而且还有很多不必要的工作。所以,在这种情况下,我想要的是只获得datepicker中显示的30天的禁用日期,如果我们更改月份,我们点击服务器并获得datepicker中显示的那些日期的禁用日期。感谢您可以查看当前月份,然后重新加载日历谢谢robert,我成功地解决了这一问题,因为我扩展了uibDatepickerDirective,用于从日期选择器获取所有可见日期,然后按照您编写的方式预加载结果。当日期选择器更改月份时,它会调用
dateDisabled
函数7x6(42)次。你真的想在用户每次选择不同的月份时给服务器打42个电话吗?有没有办法从datepicker获得这42天?因此,我可以立即传递它们并生成响应?dateDisabled
API不是为异步使用而设计的。考虑使用被设计为异步使用的。
$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;
});
}