我正在从服务器中提取所有事件数据,并且由于要提取很多事件,因此 angular-bootstrap-calendar 需要花费大量时间来加载。
我想知道是否有可能只为我所在的当前视图(月、周、日..我会隐藏年视图)提取一个月的数据。当我将视图更改为下个月时,我只会提取该月的数据。
现在,我只在加载日历时提取所有数据一次,但不确定在视图更改时如何提取数据。
var urlapievents = $location.protocol() + "://" + $location.host() + "/api/events/" ;
$http.get(urlapievents).success(function(events) {
对我来说很好的解决方案
获取视图的年份和月份,将其发送到 API,并仅检索该年份月份的事件:
js
vm.viewChangeClicked = function() {
var viewDateYearMonth = moment(vm.viewDate).format('YYYY-MM');
var urlapieventsall = $location.protocol() + "://" + $location.host() + "/api/events/" + viewDateYearMonth ;
$http.get(urlapieventsall).success(function(events) {
vm.events = events.events;
});
};
html
<div class="col-md-6 text-center">
<div class="btn-group">
<label class="btn btn-primary" ng-model="vm.calendarView" uib-btn-radio="'month'" ng-click="vm.cellIsOpen = false; vm.viewChangeClicked()">Month</label>
<label class="btn btn-primary" ng-model="vm.calendarView" uib-btn-radio="'week'" ng-click="vm.cellIsOpen = false; vm.viewChangeClicked()">Week</label>
<label class="btn btn-primary" ng-model="vm.calendarView" uib-btn-radio="'day'" ng-click="vm.cellIsOpen = false; vm.viewChangeClicked()">Day</label>
</div>
</div>
我还添加了逻辑来检查以前的 yyyy-mm 是否等于当前的 yyyy-mm,以节省对 API 的一些不必要的调用。