Javascript 角度UI日历集成-资源中的事件不显示

Javascript 角度UI日历集成-资源中的事件不显示,javascript,jquery,angularjs,fullcalendar,Javascript,Jquery,Angularjs,Fullcalendar,我面临着一个非常奇怪的问题与角度UI日历。 我正在尝试从api加载一些事件并将它们放入日历中。 首次加载页面时,事件会正确显示。但是当我点击下个月按钮并返回到上个月时,我看到静态加载的事件仍然存在,但是从API加载的事件已经消失了,尽管范围值没有改变! 从HTML方面: <div class="calendar" ui-calendar="uiConfig.calendar" ng-model="eventSources" calendar="myCalendar"></div

我面临着一个非常奇怪的问题与角度UI日历。 我正在尝试从api加载一些事件并将它们放入日历中。 首次加载页面时,事件会正确显示。但是当我点击下个月按钮并返回到上个月时,我看到静态加载的事件仍然存在,但是从API加载的事件已经消失了,尽管范围值没有改变! 从HTML方面:

<div class="calendar" ui-calendar="uiConfig.calendar" ng-model="eventSources" calendar="myCalendar"></div>
从控制器端:

appApp.controller('AgendaCtrl',
    function($scope,$resource,uiCalendarConfig){
        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        $scope.eventSources = new Array();

        var Event = $resource($scope.rootPath + 'events/:id.json', {token: $scope.user.token}, {
            'update': {method: 'PUT'}
        });

        $scope.uiConfig = {
            calendar:{
                editable: false,
                header:{
                    left: 'title',
                    center: '',
                    right: 'today prev,next'
                }
            }
        };

        $scope.events = [
                {title: 'All Day Event',start: new Date(2015, 10, 1)}
            ];
        $scope.eventSources = [$scope.events];

        $scope.evts = Event.get({user_id: $scope.user.id},function(){
            for (var i = 0; i < $scope.evts.Events.length; i++) {
                //Date conv.
                var t = $scope.evts.Events[i].Event.start.split(/[- :]/);
                $scope.evts.Events[i].Event.start = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
                var t = $scope.evts.Events[i].Event.end.split(/[- :]/);
                $scope.evts.Events[i].Event.end = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
                $scope.eventSources[0].push($scope.evts.Events[i].Event);
            };
        });
    });
控制器中硬编码的全天事件在任何情况下都能正确显示。但是$scope.evts中的事件仅在第一次加载时显示,但在我更改月份并返回到正确月份时消失

你知道为什么吗?我希望正确显示我的事件,即使我换了几个月。

我知道发生了什么。 我像这样修改了代码,效果很好

timmApp.controller('AgendaCtrl',
function($scope,$resource){
    var date = new Date();
    var d = date.getDate();
    var m = date.getMonth();
    var y = date.getFullYear();
    $scope.eventSources = new Array();
    $scope.eventApi = new Array();

    $scope.uiConfig = {
        calendar:{
            editable: false,
            header:{
                left: 'title',
                center: '',
                right: 'today prev,next'
            }
        }
    };

    $scope.events = {
        url : $scope.rootPath + "events/index.json",
        type : 'GET',
        data: {  
           user_id: $scope.user.id,
           token: $scope.user.token
        },
        success: function(data) {
            //Date conv.
            for (var i = 0; i < data.events.length; i++) {
                //Date conv.
                var t = data.events[i].start.split(/[- :]/);
                data.events[i].start = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
                var t = data.events[i].end.split(/[- :]/);
                data.events[i].end = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);
            };
            return data.events;
        }
    }; 
    $scope.eventSources = [$scope.events];
}

)

最简单的方法是使用偶数的stick属性: stick:true-事件将被缓存 stick:false默认值-未缓存

示例代码,其中将缓存所有添加的事件:

addEvents: (data) ->
@events.push { title: item.name, start: new Date(item.when), info: item.info, stick: true} for item in data