【问题标题】:Fullcalendar one feed with multiple JSON objectsFullcalendar 一个包含多个 JSON 对象的提要
【发布时间】:2013-07-10 13:45:29
【问题描述】:

您好 Fullcalendar 追随者,我正在尝试利用服务器端的线程将事件加载到日历中,以便在加载事件时获得更好的性能,这意味着:

1 - 我只有一个 evenSource 供稿:

eventSources: [othersources.funcmap] //Employee calendar MAP

2 - 在 Servlet 中(我正在研究 java):

I am gathering all JSON objets from different sources and joining them together in one large big object (with threads) that i want to send back to Fullcalendar.

2.1 - 如果我单独发送它们(多个 ajax 调用意味着 [othersources.vacations、othersources.faults 等...])有字符串(JSON 格式)它们工作正常并且所有提要都已加载。

 This is the JSON object in the "individual" String -> `[{"title":"Vacation day","start":"02-09-2013", etc etc etc}]`

问题

问题是当我将它们连接在一起时,我会制作这样的对象:

[ 
   [{"title":"Vacation day","start":"02-09-2013", etc etc etc},{"title":"Vacation day","start":"02-09-2013", etc etc etc}],
   [{"title":"Fault day","start":"02-09-2013", etc etc etc},{"title":"Faul day","start":"02-09-2013", etc etc etc}],
   [{"title":"Birthday fault","start":"02-09-2013", etc etc etc},{"title":"Birthday fault","start":"02-09-2013", etc etc etc}]

 ]

这实际上是一个有效的 JSON 对象(当然没有“等等等等”:P),但它不起作用。 fullcalendar 不会呈现事件...

我怎样才能将它们组合成一个 Fullcalendar 理解的大对象? 还是 Fullcalendar 只知道如何读取简单的 JSON 对象?

提前谢谢你。

【问题讨论】:

  • 您是否使用 AJAX 请求来检索事件? Fullcalendar 仅适用于简单的 JSON 结构。我相信实现这一目标的最佳方法是在发回响应之前处理数据。
  • 哦,好吧,我无法制作复杂的结构......谢谢你的帮助。

标签: java json multithreading servlets fullcalendar


【解决方案1】:

最简单的解决方案可能是在将事件数组交给 FullCalendar 之前将其展平。但是如果你坚持,那么也可以通过在 FullCalendar 中提供一个函数作为事件源。

函数的文档在这里:http://arshaw.com/fullcalendar/docs/event_data/events_function/

这是实现它的基本方法:

eventSources: [function (start, end, callback) {

    var eventArrays = [
        [{
            "title": "Vacation day",
            "start": new Date()
        }, {
            "title": "Vacation day",
            "start": new Date()
        }],
        [{
            "title": "Fault day",
            "start": new Date()
        }, {
            "title": "Faul day",
            "start": new Date()
        }],
        [{
            "title": "Birthday fault",
            "start": new Date()
        }, {
            "title": "Birthday fault",
            "start": new Date()
        }]
    ];

    // Using underscore.js to flatten the array
    var events = _.flatten(eventArrays);

    callback(events);
}]

您可以在这里查看一个工作示例:http://jsfiddle.net/kvakulo/q5HET/1/

【讨论】:

  • 你的意思是像这样的 [[{},{}],[{},{}]] ?是的,我正在做的就是这样,就像 JSON 格式的连续字符串一样,我没有添加任何“\n”,但它不起作用。尽管如此,我将进一步探索这一点,并在我实现我的想法时回到这里;)谢谢回答。
  • 嗨!我所说的平面是指像这样的数组 [{},{},{},{}]。第一个数组应该没有任何子数组 - Regin
  • 这是我为每个来源所做的,一个平坦的,然后我试图将它们加入一个......我现在明白这不能按照我的方式完成,我会的必须在没有数组的情况下加入它们......非常感谢。
【解决方案2】:

最后这完全没有意义。多次 AJAX 调用比尝试在 servlet 中使用线程返回所有调用要快。

但它适用于 Flat JSON,我只是将它们全部连接在一起 [{},{}...],没有子数组。

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2022-01-12
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多