完整日历,将逻辑应用于defaultDate设置



我在过去的一年里一直在学习Ruby,我对JS非常陌生,所以我会尽力解释这一点。

我正在使用Adam Shaw的完整日历插件。日历显示用户指定时间段内的事件。我想对defaultDate设置应用一些逻辑,它规定了以下内容:

如果开始月份大于或等于当前月份,则默认视图应为开始月份,而不是当前月份。如果开始月份小于或等于当前月份,则同样适用。

(我意识到这一切都很冗长和糟糕,但请耐心等待,我正在学习)

var defaultDateLogic = function() {
var finishDate = new Date("<%= finish.strftime("%Y-%m-%dT%H:%M:%S") %>");
var startDate = new Date("<%= start.strftime("%Y-%m-%dT%H:%M:%S") %>");
var todaysDate = new Date("<%= date_today.strftime("%Y-%m-%dT%H:%M:%S") %>");
if (startDate >= todaysDate){
startDate 
// return this as default date
} 
};

然后在我的日历设置中,我调用这个变量

defaultDate: defaultDateLogic,
weekMode: "liquid",
events: bookingEvents, // this can be a JSON feed (extra HTTP request)
header: headerOptions,

使用函数变量设置默认日期似乎导致fullcalendar出现以下错误:

Uncaught TypeError: Cannot read property 'day' of undefinedfullcalendar.js?body=1:4614 Grid.extend.updateCellsfullcalendar.js?body=1:2869 fc.Grid.RowRenderer.extend.setRangefullcalendar.js?body=1:10018 fcViews.basic.View.extend.setRangefullcalendar.js?body=1:6644 fc.View.Class.extend.setDatefullcalendar.js?body=1:6817 fc.View.Class.extend.displayfullcalendar.js?body=1:7992 renderViewfullcalendar.js?body=1:7916 initialRenderfullcalendar.js?body=1:7880 renderfullcalendar.js?body=1:51 (anonymous function)jquery.js?body=1:385 jQuery.extend.eachjquery.js?body=1:137 jQuery.fn.jQuery.eachfullcalendar.js?body=1:30 $.fn.fullCalendarbookings:1737 setupCalendarjquery.js?body=1:3144 jQuery.Callbacks.firejquery.js?body=1:3256 jQuery.Callbacks.self.fireWithjquery.js?body=1:3468 jQuery.extend.readyjquery.js?body=1:3499 completed

为什么,我该如何解决?

如果您查看defaultDate的完整日历文档,您可以看到它需要一个moment。时刻是一种日期对象,而不是函数。

一些完整日历选项可以采用函数或对象,并且它们在文档中被指定为函数或对象(例如selectOverlap)。但对于defaultDate,它需要一个矩对象。

Momentjs是运行fullcalendar所需的另一个JS脚本。它比标准的JS日期对象更好地处理日期。但您可以保留现有的代码,因为moment的构造函数可以解析JS日期。

所以,你所需要做的就是传递一个时刻(或日期),而不是一个函数。

函数是JS中的对象。现在你在说,"把这个函数当作卑鄙的东西传递出去"。就像您在传递回调一样。

defaultDate: defaultDateLogic,

相反,您需要说,"运行此函数,然后传递返回的对象"。

defaultDate: defaultDateLogic(),

漂亮又简单。

注:

这将只运行一次(当fullcalendar初始化时)。如果您希望它在每次fullcalendar查找其defaultDate时运行。。。你不能。fullcalendar不支持此功能。

相关内容

  • 没有找到相关文章

最新更新