$ scope.splice(0)和$ scope.push(event)之后,Calendar不会呈现任何事件

时间:2014-12-29 21:26:58

标签: ajax angularjs fullcalendar

嗨我有角度ui-calendar(arshaw&full.calendar的角度包装)的问题。

在第一个状态中,我通过$ http调用立即加载事件。日历按预期呈现。

在第二步中,我根据showNeschvaleneTerminyFunction()的结果加载未批准或已批准的事件。但是,在此加载之后,日历呈现,但没有任何事件。我验证了作用域上的对象有事件,并通过回显屏幕上的对象正确更新。但是日历并不会显示事件。

你能帮助我吗,我如何使用php驱动存储中的ajax正确加载和重新加载事件?

这是我的代码

$scope.events = [];
$scope.getTermins = function(){
    if($scope.showNeschvaleneTerminy == true){
        $http.get(plutanium.ajaxurl + '?action=terminy_read').success(function (data, status, headers, config) {



            $scope.events.splice(0, $scope.events.length);
            $className = '';
            for (var i = 0; i < data.length; i++) {
                if (data[i].status == 0) {
                    $className = 'b-danger';
                } else {
                    $className = 'b-info';
                }
                $scope.events.push({
                    id: data[i].id,
                    title: data[i].jmeno,
                    start: moment(data[i].date).toDate(),
                    end: moment(data[i].date).add('hours', 1).toDate(),
                    allDay: false,
                    className: ['b-l b-2x ' + $className]
                });

            }



        });
    }else{
        $http.get(plutanium.ajaxurl + '?action=terminy_approved').success(function (data, status, headers, config) {



            $scope.events.splice(0, $scope.events.length);
            $className = '';
            for (var i = 0; i < data.length; i++) {

                $scope.events.push({
                    id: data[i].id,
                    title: data[i].jmeno,
                    start: moment(data[i].date).toDate(),
                    end: moment(data[i].date).add('hours', 1).toDate(),
                    allDay: false,
                    className: ['b-l b-2x b-info']
                });

            }


        });
    }

}

$scope.getTermins();
$scope.showNeschvaleneTerminyFunction = function () {
    if ($scope.showNeschvaleneTerminy == false) {
        $scope.showNeschvaleneTerminy = true
    } else {
        $scope.showNeschvaleneTerminy = false
    }
    $scope.getTermins();
}

/* config object */
$scope.uiConfig = {
  calendar1:{
      defaultView: 'agendaDay',
      height: $window.innerHeight-200,
      firstDay: 1,
      firstHour: 7,
      slotMinutes: 60,
      defaultEventMinutes: 120,
      minTime: 7,
      maxTime: 15,
    editable: true,
    header:{
      left: '',
      center: 'title',
      right: ''
    },

      dayClick: $scope.AgendaOnDayClick,
    eventClick: $scope.alertOnEventClick,
    eventDrop: $scope.alertOnDrop,
    //eventResize: $scope.alertOnResize,
    //eventMouseover: $scope.alertOnMouseOver,

  },
    calendar2: {


        editable: true,
        header: {
            left: 'prev',
            center: 'title',
            right: 'next'
        },
        height: $window.innerHeight - 200,
        firstDay: 1,
        minTime: 7,
        maxTime: 15,
        dayClick: $scope.MonthOnDayClick,
        eventClick: $scope.alertOnEventClick,
        eventDrop: $scope.alertOnDrop,
        //eventResize: $scope.alertOnResize,
        //eventMouseover: $scope.alertOnMouseOver,
        dayRender: $scope.setDay

    },
    calendar3: {
        defaultView: 'agendaDay',

        editable: true,
        header: {
            left: '',
            center: 'title',
            right: ''
        },
        height: $window.innerHeight - 200,
        firstDay: 1,
        firstHour: 7,
        slotMinutes: 60,
        defaultEventMinutes: 120,
        minTime: 7,
        maxTime: 15,
        dayClick: $scope.AgendaOnDayClick,
        eventClick: $scope.alertOnEventClick,
        eventDrop: $scope.alertOnDrop,
        //eventResize: $scope.alertOnResize,
        //eventMouseover: $scope.alertOnMouseOver,

    }
};

$scope.eventSources = [$scope.events];

1 个答案:

答案 0 :(得分:0)

所以我找不到任何问题的解决方案,这就是我禁用ui-calendar包装器的原因,现在我在将事件加载到数组后手动调用fullcalendar refreshevents函数。它现在像一个魅力。