es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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();
        }
    }
});
Tags:  , , ,

Answer

  1. Avatar for 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:

    viewRender: function(view, element) {
        // Hacer una llamada a la API y obtener los nuevos datos de eventos
        $.ajax({
            url: 'tu_url_de_api',
            method: 'GET',
            success: function(data) {
                // Eliminar la fuente de eventos existente
                $('#request_calender').fullCalendar('removeEventSources');
    
                // Agregar la nueva fuente de eventos
                $('#request_calender').fullCalendar('addEventSource', data);
            }
        });
    }
    

    ¡Espero que esto te ayude!

Comments are closed.