Estoy intentando recopilar con éxito todos los datos de eventos de arrastrar y soltar. Tuve un éxito parcial al hacerlo utilizando eventReceive . Se las arregló para obtener el title , el start y el end , pero no el ID de resourceID .
Aparentemente eventReceive (y, posteriormente, 'Event Object') solo permite title , start y end pero no resourceID que es lo que está causando el problema.
Me di cuenta de que, sin embargo, la sección justo encima de drop: está agarrando y consolando. Registrando el resourceId usando arg.resource.id .
Entonces, la pregunta que tengo es cómo puedo combinar los dos y generar todo title , start , end y resourceID . Cualquier ayuda sería muy apreciada.
drop: function(arg) { console.log('drop date: ' + arg.dateStr) if (arg.resource) { console.log('drop resource: ' + arg.resource.id) const resourceID = arg.resource.id; console.log('TESTING: ' + resourceID); } if (document.getElementById('drop-remove').checked) { arg.draggedEl.parentNode.removeChild(arg.draggedEl); } }, eventReceive: function(arg) { // called when a proper external event is dropped console.log('eventReceive', arg.event); const eventData = { title: arg.event.title, resourceId: arg.event.resourceId, start: arg.event.start, end: arg.event.end, }; console.log(eventData);En la drop de llamada de entrega, el ID del recurso es parte de la información general de entrega, ya que en ese momento aún no hay un evento de calendario. Por lo tanto, no hay particular, la información del recurso sería accesible de manera similar desde un objeto de evento: las dos cosas no están relacionadas.
Sin embargo, de manera frustrante, la documentación del objeto de evento en realidad no especifica cómo leer los datos de recursos asociados de un evento. Parece que los recursos asociados no están destinados a ser una propiedad pública de un evento, por alguna razón.
Al examinar las partes internas de arg.event cuando se registra en la consola, podemos ver que en lugar de una propiedad resourceId , en realidad hay una propiedad resourceIds dentro de la propiedad _def , que es una matriz de ID de recursos: un evento se puede asociar con varios recursos
Por lo tanto, podría acceder a esa propiedad, pero en realidad no se supone que sea pública, por lo que no debemos confiar en ella. Afortunadamente, una mirada rápida a la documentación de fullCalendar muestra que el objeto de evento tiene un práctico método getResources al que puede llamar.
Entonces, si en el eventReceive devolución de llamada escribe:
const eventData = { title: arg.event.title, resourceIds: arg.event.getResources().map(function(resource) { return resource.id }), start: arg.event.start, end: arg.event.end, };Esto recuperará la matriz de resourceIds a la que está asignado el evento. Por supuesto, en el contexto de haber soltado el evento en el calendario en una ubicación específica, en la práctica, esta matriz solo contendrá una entrada.
Demostración: https://codepen.io/ADyson82/pen/bGYQXLJ