如何获取拖放标题、开始、结束和资源ID



我正试图通过拖放成功收集所有事件数据。通过使用eventReceive,我在一定程度上成功地做到了这一点。它设法获取了titlestartend,但没有获取resourceID

显然,eventReceive(以及随后的"事件对象"(只允许titlestartend,而不允许导致问题的resourceID

然而,我注意到drop:正上方的部分正在使用arg.resource.id获取并控制台记录resourceId

所以我的问题是,我如何可能将两者结合起来,并输出所有的titlestartendresourceID。如有任何帮助,我们将不胜感激。

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);

drop回调中,资源ID是常规丢弃信息的一部分,因为此时还没有日历事件。因此,资源信息不会以类似的方式从事件对象中访问,这两件事是不相关的。

然而,令人沮丧的是,事件对象文档实际上并没有指定如何从事件中读取关联的资源数据。出于某种原因,相关资源似乎不打算成为活动的公共财产。

arg.event被记录到控制台时,通过检查其内部,我们可以看到,_def属性中实际上有一个resourceIds属性,而不是resourceId属性,它是一个资源ID数组-一个事件可以与多个资源关联。

因此,可以访问该属性,但它实际上不应该是公共的,所以我们不应该依赖它。幸运的是,快速查看完整的Calendar文档可以发现,事件对象有一个方便的getResources方法可以调用。

因此,如果在eventReceive回调中写下:

const eventData = {
title: arg.event.title,
resourceIds: arg.event.getResources().map(function(resource) { return resource.id }),
start: arg.event.start,
end: arg.event.end,
};

这将检索分配给事件的resourceId的数组。当然,在刚刚将事件放到特定位置的日历上的上下文中,在实践中,此数组将只包含一个条目。

演示:https://codepen.io/ADyson82/pen/bGYQXLJ

最新更新