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