【发布时间】:2017-12-19 11:52:36
【问题描述】:
我正在使用fullcalendar 包。我的目标是在日历中显示数据库中的约会。
根据他们的文档,我必须使用events() 函数。
我的收藏 (Requests),我有 title 和 start 属性。 start 属性存储如下:
start: 'December 19, 2017 at 9:43 PM'
我现在被困在这里:
Template.appointments.onRendered( () => {
$( '#calendar' ).fullCalendar({
events( start, end, timezone, callback ) {
});
}
});
});
我应该如何检索日期和时间并将其显示在日历中?
更新:
这是我尝试过的:
Template.appointments.onRendered( () => {
$( '#calendar' ).fullCalendar({
events( start, end, timezone, callback ) {
let data = Requests.find().fetch().map( ( event ) => {
event.start = new Date(event.start.replace("at", ""));
event.end = new Date(event.start.replace("at", ""));
return event;
});
if ( data ) {
callback( data );
}
}
});
Tracker.autorun( () => {
Requests.find().fetch();
$( '#calendar' ).fullCalendar( 'refetchEvents' );
});
});
没用,我试着把events函数里面的代码全部去掉,改成下面这样:
Template.appointments.onRendered( () => {
$( '#calendar' ).fullCalendar({
events( start, end, timezone, callback ) {
console.log('WORKS!')
}
});
});
控制台没有打印任何内容。为什么事件里面的代码没有被执行?
注意:日历已成功加载到模板中,但为空。
【问题讨论】:
-
附带说明,您是否使用字符串来存储日期?或者是一个日期时间对象。
-
@blueren 这是我正在使用的字符串
-
不要将日期作为字符串存储在数据库中。这是一个可怕的想法。您甚至不能针对它编写查询。 GUI 应该负责格式化日期(通常,它应该根据用户的本地习惯来做,或者它应该像 ISO 那样明确的格式)。代码中的其他任何地方都应为您的编程语言使用适当的 DateTime 类型的对象。
-
@ADyson 如果我可以将其查询回 Date 不应该没问题吗?我正在使用教程作为参考,他们也以字符串格式将其存储在那里。这里:themeteorchef.com/tutorials/…
-
在该示例中,当您看到示例数据时,它们以 yyyy-mm-dd 格式提供日期,该格式是明确的,并且可以被 momentJS 解析(fullcalendar 用于处理日期)。但它也是一个模拟,因此不涉及数据库。他们本可以使用 momentJS 或 Date 对象,但它的可读性可能较差。通常,当您最终以 JSON 形式从服务器端检索数据时,它会作为字符串传输(因为您无法通过网络传输代码对象),但它必须是有效的、可解析的、明确的字符串,与您的不同.
标签: meteor fullcalendar