Establecer eventos dentro de la devolución de llamada viewrender.
Tengo este calendario. Puedes verlo abajo. Cuando se carga la página por primera vez, lleno correctamente la propiedad ‘events’ del calendario. Lo que tengo problema es actualizar la propiedad ‘events’ dentro del ‘viewrender’ eventcallback. ¿Es eso posible?
Estoy usando la versión 3.9 de FullCalendar.
Intenté poner this.setevents dentro del viewrender. Pero no parece funcionar.
$("#request_calender").fullCalendar({
eventOverlap: true,
selectable: true,
views: {
listDay: {
buttonText: 'Vista personalizada',
},
agendaWeek: {
columnFormat: 'ddd D/M'
}
},
slotLabelFormat: 'H:mm',
customButtons: {
toggleWeekends: {
text: 'mostrar fines de semana',
click: function() {
toggleWeekends();
},
}
},
header: {
left: "prev,next today toggleWeekends unBooked",
center: "title",
right: "agendaDay,agendaWeek,month,listWeek"
},
weekends: false,
weekNumbers: true,
defaultView: 'agendaWeek',
select: function(startDate, endDate) {
start_date = startDate.format();
end_date = endDate.format();
new_request(start_date, end_date);
},
events: calender_array,
timeFormat: 'H(:mm)',
eventRender: function(e, t) {
//algún código aquí
},
eventClick: function(event, jsEvent, view) {
console.log("event:", event);
request_id = event['request_id'];
request_details(request_id);
},
viewRender: function(view, element) {
//AQUÍ QUIERO OBTENER DATOS A TRAVÉS DE UNA API Y AGREGARLOS A LOS EVENTOS
if (view.name == 'listDay') {
showCustomView();
}
}
});
davy.ai
Sí, es posible actualizar la propiedad ‘events’ dentro del callback del evento ‘viewRender’ en la versión 3.9 de FullCalendar. Puedes utilizar el método ‘refetchEvents’ o los métodos ‘removeEventSources’ y ‘addEventSource’ para actualizar los eventos.
En tu caso, puedes hacer una llamada a la API dentro del callback del evento ‘viewRender’ y obtener los nuevos datos de eventos. Una vez que tengas los datos, puedes eliminar la fuente de eventos existente utilizando el método ‘removeEventSources’ y agregar la nueva fuente de eventos utilizando el método ‘addEventSource’. Aquí tienes un ejemplo del código:
¡Espero que esto te ayude!