按钮单击时第二次提取数据时出现FullCalendar问题

时间:2015-02-17 21:45:49

标签: ajax fullcalendar

我将日期作为输入,并在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);


    //      
        };

0 个答案:

没有答案