我将日期作为输入,并在ajax调用的帮助下获取面向该特定日期的数据,同时这样做我第一次成功获取数据。如果我第二次这样做,我将再次获得所选日期的第一次数据。
我认为问题发生在这一行,
$('#calendar').fullCalendar('gotoDate', NewDate);
我正在尝试将日历移动到所选日期,在此行之后我看到所选日期变为第一次选择的日期。如果我刷新页面并再试一次,它就像第一次请求一样工作。但如果没有这条线,第二次的请求就不会完全完成。
示例:如果我选择日期为2015年3月16日并单击“查看”按钮,我将在3月16日的日历中看到包含开始日期和结束日期的事件列表,如果我在7月13日尝试相同的第二次2015年,我将看到3月16日的结果再次出现而不是7月13日。
我在下面分享我的代码,
$scope.view = function(){
document.getElementById("calendar").style.display="block";
var portfolio = $scope.selectedPortfolioList.portfolio;
var period = $scope.selectedPeriod.period;
var week = $scope.selectedWeek.week;
var sDate = $("#bDate").val();
var json = { "portfolio" : portfolio, "week" : week, "period": period, "sDate":sDate};
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: false,
eventLimit: true, // allow "more" link when too many events
events: function(start, end, timezone, callback) {
$.ajax({
url: 'service/businessEvents',
dataType: 'json',
type: "POST",
data:JSON.stringify(json),
contentType: 'application/json',
mimeType: 'application/json',
success: function(response) {
var events = [];
$.each(response, function (idx,infraslist) {
var Tile=infraslist.title;
var star =infraslist.startTime;
var end = infraslist.end;
var endt = $.fullCalendar.moment(star);
endt = endt.add(end,'hours');
//Here pushing the content on calendar
events.push({
title: Tile,
start: star,
end: endt
});
});
callback(events);
},
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 500) {
alert('Internal error: ' + jqXHR.responseText);
} else {
alert('Unexpected error.'+ errorThrown);
}
}
});
},
eventClick: function(calEvent, jsEvent, view) {
if (view.name === "month") {
view.calendar.zoomTo(calEvent.start, "agendaWeek");
};
if (view.name === "agendaWeek") {
view.calendar.zoomTo(calEvent.start, "agendaDay");
};
}
});
var NewDate = moment(sDate).format('YYYY/MM/DD');
//Here the date changes after the below line. If i dont mention the below line the request stops here.
$('#calendar').fullCalendar('gotoDate', NewDate);
//
};