fullcalendar(fc)文档状态
非标准字段除了上述字段外,您还可以 在每个事件对象中包括您自己的非标准字段。 FullCalendar不会修改或删除这些字段。例如, 开发人员通常包括一个描述字段,用于回调此类回调 作为事件。[来源:事件对象]
和Google日历事件资源
高级:扩展属性 Google日历的API允许您为事件指定扩展属性。扩展特性 将作为附加的扩展性哈希提供 每个事件对象。[来源:Google日历的事件]
然而,不太清楚的是,哪些gcal Eventsource属性被归类为标准,哪些是非标准的。
假设第一个事件对象上列出的属性也适用于GCAL Eventsources的标准属性,则意味着其他任何可能是非标准字段,对吗?
如果我想查询给定的FC事件的创建者字段,例如 creator.displayname 或 creator.email 根据Google API Ref Doc的事件#ExtendedProperties出现在事件弹出的底部。在Google日历中,不是FC),但我不确定如何完成此操作。
我找不到标准的完整列表&FullCalendar(V3)GCAL Eventsources的非标准字段, nover Incor doc/示例有关如何访问这些属性的示例。
无论如何尝试以下内容:
console.log(event.extendedProperties.creator.displayName);
console.log(event.extendedProperties.creator.email);
刚刚产生
jQuery-3.3.1.min.js:2 jquery.deferred异常:无法读取未定义typeError的属性'displayName'displionName'displionName'displionName'无法读取displayname的'displayname'displayName'displionName'
肯定的事件。ExtendedProperties.creator确实产生了不确定的。但是接下来我尝试了:
console.log(event.extendedProperties);
console.dir(event.extendedProperties);
没有产生错误,而是似乎是一个空的对象
console.dir(event.extendedProperties)的屏幕截图
因此,如果它一无所有(即空对象),则可以假设我要查询的给定事件没有扩展的杂物,并且可以合理地假设创建者字段也许是: creator.displayname和 creator.email 不是 non-standard fields 毕竟,或至少不是扩展属性类型。
等一下,这是否暗示我们正在处理的非标准字段列表上可能有两种类型,还是我一直盯着这个屏幕了太久?🤔
最后,我试图仔细检查以确保它们还不是事件对象的一部分。
console.log(event.creator.displayName);
console.log(event.creator.email);
,但这再次导致
uck typeerror :无法读取未定义的
的属性'displayName'
我完全亏损。我应该如何获得在FullCalendar网站上任何地方都没有提及的字段,也不是扩展的属性?
我是否忽略了任何东西,或者可能有一个我以某种方式错过的标准/非标准字段的列表?
关于如何获得这些创建者字段的任何想法将是很多 感谢。
我看不到任何形式的代码示例在这里有所帮助,但是正如我最近被告知的" 代码在堆栈溢出上几乎总是需要的"样本...
<div id='calendar'></div>
<script>
$(function() {
$('#calendar').fullCalendar({
googleCalendarApiKey: '%googleCalendarApiKey%',
events: {
googleCalendarId: 'lph029pf163sce67stdgfcdpfg@group.calendar.google.com' //imdb UK
},
defaultView: 'month',
eventRender: function(event, element) {
element.popover({
animation:true,
delay: 300,
title: event.title,
content: event.description, // + req << creator.displayName/email >> e.g."Created by: imdbreleases@gmail.com"
placement: 'auto',
trigger: 'hover'
});
}
});
});
</script>
ps并没有像建议不要共享googleapikey
fullcalendar文档说
Google日历的API允许您指定扩展属性 您的活动。扩展属性将作为 每个事件对象附加的扩展杂货哈希。
他们指的是您在Google日历事件中可能定义的额外自定义字段 - 日历API其他不支持或提供的字段作为标准。这些是FullCalendar将复制为"额外"的字段。它是不是指的是" fullcalendar 通常不将其视为标准的任何字段。
现在,因为日历API返回的几乎没有事件数据结构将直接映射到FullCalendar要求您提供的数据结构上以构建有效的事件对象(请参阅FullCalendar的"标准"字段的列表事件对象文档),我们不能简单地将日历API的JSON输出直接提供到FullCalendar,并期望其工作并自动映射字段。
这就是为什么FullCalendar提供了gcal.js
文件作为方便实用程序连接到API,检索事件数据并将其转换为FullCalendar期望并且会理解的格式的原因。显然,开发人员选择了他们将要从一个领域转移到另一个领域。由于正在构造一个新对象以传递到FullCalendar,因此没有任何形式的自动映射 - 所有这些都依赖于代码中写的内容。通常,如果您将JSON提供给FullCalendar Direct Direct,则它还在对象中发现的任何其他字段中也复制了它实际上是"标准"的(即标准标准是用于特定目的的标准)。文档)。但是再次,由于代码为FullCalendar创建了新对象,因此也不会发生。
除了" ExtendedProperties"上的注释之外,没有明确的文档将代码从API输出副本填充到FullCalendar兼容的事件对象中。在您的页面中使用console.log($("#calendar").fullCalendar("clientEvents"));
的快速体验将揭示最终事件的属性,但您也可以在源代码中查看。在撰写本文时,FullCalendar V3的最新版本为3.10,该版本的gcal.js源代码(在此处可查看)。
该代码包含以下片段以将API数据转换为FullCalendar对象:
return {
id: item.id,
title: item.summary,
start: item.start.dateTime || item.start.date,
end: item.end.dateTime || item.end.date,
url: url,
location: item.location,
description: item.description,
extendedProperties: extendedProperties
};
在您的问题和评论中,您已经提到您对日历API提供的creator
和description
字段感兴趣。这些是GCAL中的标准字段(根据资源表示文档),因此不会在"扩展杂货"集合中。您还可以看到 description
已经由gcal.js复制了,即使这不是FullCalendar通常会使用的字段 - 但是,如果您想在日历中使用某些使用。
因此,您需要做的所有需要在FullCalendar事件中提供的creator
字段(或来自GCAL属性的任何其他字段)都包括在GCAL.JS复制的数据中。例如:
return {
id: item.id,
title: item.summary,
start: item.start.dateTime || item.start.date,
end: item.end.dateTime || item.end.date,
url: url,
location: item.location,
description: item.description,
extendedProperties: extendedProperties,
creator: item.creator
};
当然,如果您通过cdn包括gcal.js/gcal.min.js。您需要更改代码以托管自己的修改版本。
顺便说一句,如果您觉得FullCalendar项目将从默认包含GCAL的更多字段中受益,那么由于FullCalendar是一个开源,社区项目,您可以自由地提出功能请求要更改GCAL实用程序(这实际上只是一个便利性附加组件,作为FullCalendar的标准功能和Google Calendar API之间的一层),甚至还对包含建议的更改做出代码贡献,以供维护者考虑包含的纳入者在主要版本中。如果不这样做,您可以继续维护您的gcal.js的修改版本,甚至可以将其完全替换为与日历API互动的实用程序。