Javascript fullcalendar事件排序不适用于我

Javascript fullcalendar事件排序不适用于我,javascript,sorting,fullcalendar,Javascript,Sorting,Fullcalendar,使用v3.8.2。我正在努力让我的事件分类。我已经读了(并重新读了)答案。我正在使用,并尝试了各种选项,但总是得到下面截图这样的结果。这些是“全天”活动。这是一个船舶下水日历,我总是想在“取出”之前显示“放入” 很明显,事件不是按标题排序的,也不是按我尝试过的任何eventOrder选项排序的 当前我的代码如下所示: $calendar.fullCalendar({ eventOrder: function(e) { return e.miscProps.sort;

使用v3.8.2。我正在努力让我的事件分类。我已经读了(并重新读了)答案。我正在使用,并尝试了各种选项,但总是得到下面截图这样的结果。这些是“全天”活动。这是一个船舶下水日历,我总是想在“取出”之前显示“放入”

很明显,事件不是按标题排序的,也不是按我尝试过的任何
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"}
数据如下所示:

  $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


谢谢。

如果您为
eventOrder
提供了一个函数,那么当您链接到state时,它接受两个输入参数(需要比较和排序的两个事件),并且您还被告知它应该返回
-1
0
1
作为比较结果-作为两个输入项中哪一个应放在第一位的指示

如果第一个事件应该在列表中的第一个,则返回-1。如果相反,则返回1,如果相等,则返回0。其中的逻辑应该与文档中为本机JS数组排序函数提供的示例代码非常相似-请参见此处:

您的逻辑当前只返回未排序列表中第一个事件的“sort”值。这根本没有进行任何类型的比较,而且它也没有提供调用代码所期望的全部可能值(即,您只返回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;
},
这是你唯一需要写的东西

演示:



顺便说一句,您上面给出的示例数据没有多大用处,因为它们在不同的日期,所以自定义排序不适用。显然,在本例中,为了创建演示,我可以很容易地对其进行更改,但提供一个实际再现问题的示例更有意义:-)

如果您为
eventOrder
提供一个函数,那么当您链接到状态时,它会接受两个输入参数(需要比较和排序的两个事件),并且还告诉您,作为比较的结果,它应该返回
-1
0
1
,作为两个输入项中应该放在第一位的指示

如果第一个事件应该是列表中的第一个,则返回-1。如果相反,则返回1,如果它们相等,则返回0。其中的逻辑应该非常类似于文档中为本机JS数组排序函数提供的示例代码-请参见此处:

当前,您的逻辑只会为未排序列表中的第一个事件返回“sort”值。这根本没有进行任何类型的比较,也没有提供调用代码所期望的全部可能值(即,您只返回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;
},
这是你唯一需要写的东西

演示:



顺便说一句,您上面给出的示例数据没有多大用处,因为它们在不同的日期,所以自定义排序将不适用。显然,在这种情况下,我可以很容易地更改它以创建演示,但提供一个实际再现该问题的示例更有意义:-)

感谢您的详细解释。我应该更彻底地阅读有关函数使用的文档。在其他尝试失败后,我开始使用该函数,特别是使用eventOrder:“className”,这将消除我对“排序”的需要但是className是一个数组,所以我开始使用这个函数,但仍然没有乐趣(因为我没有消化文档),所以我使用蛮力并添加了“sort”,在这一点上,我想我自己很困惑。有没有优雅的方法来使用className w/o函数?在您的数据示例中,className字段似乎是字符串而不是数组。因此,如果您告诉它按此字段排序,它将执行简单的字母排序,这可能不是您想要的。如果您需要查看值并放置em-in-order基于对className值的其他解释,那么您将需要一个自定义函数。我感谢您的帮助,不想浪费您更多的时间。简单地使用eventOrder:“className”不会产生字母排序。在eventOrder:function(a,b)中,“className”是“a”和“b”的属性,这是一个数组。再次感谢。啊,好的。原始数据中的className属性将在“miscProps”中,就像“sort”一样。我猜,另一个属性可能是指分配给事件的CSS类(现在不是在计算机上测试它)对。“className”是分配给事件的CSS类。它在事件上显示为数组,而不是在“MissProps”中。并且似乎不能作为eventOrder:value工作,这是我开始的地方。我试图在样式和排序方面重载它。但感谢您的患者帮助,我在这一过程中学到了很多。感谢您提供的详细说明anation。我应该更彻底地阅读有关函数使用的文档。在其他尝试失败后,我开始使用函数,特别是使用eventOrder:“className”,这将消除我对“sort”的需要。但是className是一个数组,所以我开始使用函数,仍然没有乐趣(因为我还没有消化文档)所以我用蛮力添加了“sort”,我想我自己已经很困惑了。有没有优雅的方法在dat中使用带函数的类名