Я использую Angular UI-Calendar для отображения некоторых событий в календаре. События отображаются в календаре. Но когда я обновляю какие-либо сведения о мероприятии, информация о событии фактически изменяется, но не изменяется на дисплее календаря (например: start).
Изначально, после того, как я изменил детали события, я перезагрузил страницу, чтобы отобразить измененные изменения, и она тоже работала. В этом методе у меня был пустой массив $scope.events = [];
, который я заполнил после извлечения записей из БД.
Но теперь я хочу избежать перезагрузки этой страницы. Итак, как только информация о событии изменяется из модального окна, я очищаю содержимое массива $scope.events
, используя $scope.events = [];
, а затем используя вызов API, я снова заполняю новые события в массиве $scope.events
. Это отлично работает, поскольку в представлении "Список" отображаются детали измененных событий. Но сам календарь показывает старые записи. например, если я изменяю start
с 11 апреля по 13 апреля, календарь показывает событие 11 апреля, тогда как в представлениях списков показаны измененные данные, т.е. 13 апреля. Используя перезагрузку страницы, корректирует это событие. Это событие отображается в измененную дату (13 апреля).
Как я могу гарантировать, что событие будет изменено в Календаре тоже без перезагрузки страницы?
Я попробовал calendar.fullCalendar('render');
после получения новых записей из БД, но это не решает проблему.
Вот несколько кодов:
Сначала я сделал это, чтобы отправить данные в БД, а затем перезагрузить страницу для извлечения обновленных данных.
$http.put(url,senddata).success(function(data){$window.location.reload();});
Теперь я хочу избежать перезагрузки страницы, поэтому я сделал
$http.put(url,senddata).success(function(data){//$window.location.reload();//sends modified data to server
$scope.events = []; //clear events array
$http.get(url2).success(function(data){ //fetch new events from server, and push in array
$scope.schedule = data;
for(var i=0;i<data.length;i++)
{
$scope.events.push({
idx: data[i].idx,
title: data[i].title,
description : data[i].description,
allDay: false,
start: new Date(data[i].start),
end: new Date(data[i].end),
});
calendar.fullCalendar('render'); //Tried even this, didn't work
}
});
Выше кода нажимает измененное событие в массиве event
как видимое в представлении списка, но календарь по-прежнему показывает старое событие до перезагрузки страницы.