使用fullcalendar v3.8.2。我正在努力整理事件。我已经阅读(并重新阅读了)stackoverflow答案here。我正在使用evenOrder,并尝试了各种选项,但总是得到如下屏幕截图所示的结果。这些是“全天”事件。这是一艘船的发射日历,我一直想在“取出”之前显示“投入”。
请记住,事件不是按标题排序的,也不是我尝试过的任何eventOrder
选项的排序。
当前我的代码如下:
$calendar.fullCalendar({
eventOrder: function(e) {
return e.miscProps.sort;
},
数据如下:
{start: "2019-01-02", title: "30 put ins", className: "putin", sort: "0"}
{start: "2019-01-16", title: "1 take outs", className: "takeout", sort: "1"}
“ putin”事件始终为sort:0
,而“ takout”始终为sort:1
eventOrder: function()
被调用并正确返回0或1。
谢谢。
答案 0 :(得分:2)
如果您为eventOrder
提供一个函数,那么,当您链接到状态的eventOrder docs时,它接受两个输入参数(需要比较两个事件,排序),并且还告诉您应该返回-1
,0
或1
作为比较的结果-作为指示应该输入两个输入项中的哪一个放在第一位。
如果第一个事件应该在列表中的第一位,则返回-1。如果相反,则返回1,如果相等,则返回0。其中的逻辑应与文档中为本地JS数组排序功能提供的示例代码非常相似-参见此处:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description < / p>
您的逻辑当前将只为碰巧在未排序列表中排在第一位的事件返回“排序”值。这根本没有做任何比较,也没有提供调用代码期望的所有可能值(即,您只返回0或1,从不返回-1-但是即使您这样做也不会)不一定有意义)。
有效的比较功能为:
eventOrder: function(a, b) {
var result = 0;
if (a.miscProps.sort < b.miscProps.sort) result = -1; //event a should be listed first
else if (a.miscProps.sort > b.miscProps.sort) result = 1; //event b should be listed first
return result;
},
演示:http://jsfiddle.net/c9upo8w2/1/
但是...实际上,就我所知,您实际上不需要为此编写自定义函数,因为仅在“ sort”字段中就可以对升序的数字进行非常直接的排序。无需进行复杂的计算。指定要排序的字段可以很好地完成工作-fullCalendar可以完成其余工作。再次链接的文档指出,如果您将字段名称作为“ eventOrder”选项提供,则它将按该字段升序对事件进行排序(否则相等)。所以:
eventOrder: "sort"
是您唯一需要写的东西。
演示:http://jsfiddle.net/c9upo8w2/
P.S。顺便说一句,您上面提供的示例数据并没有多大用处,因为它们在不同的日期,但自定义排序将不适用。显然,在这种情况下,我可以轻松地对其进行更改以创建演示,但是提供一个实际再现该问题的示例会更有意义:-)