【问题标题】:Problem with methods when loading resources as a JSON feed将资源作为 JSON 提要加载时的方法问题
【发布时间】:2025-11-28 20:00:01
【问题描述】:

从包含 JSON 提要的远程脚本加载资源时,我在使用 getResources 和 addResource 等方法时遇到问题。

如果将相同的资源作为数组包含在内,则可以正常工作。 工作示例:

resources: [{"id":"a","title":"Auditorium A"},{"id":"b","title":"Auditorium B","eventColor":"green"}....

https://codepen.io/ProbablyTheRealJonas/pen/yLVzEJw

不工作:

resources: 'https://fullcalendar.io/demo-resources.json?with-nesting&with-colors',

https://codepen.io/ProbablyTheRealJonas/pen/BaQwVjY

我可能缺少什么?

【问题讨论】:

    标签: javascript ajax fullcalendar fullcalendar-5


    【解决方案1】:

    我认为这与您在调用 calendar.render() 后尝试立即添加资源的事实有关 - 我认为这不是一个现实的场景 - 但忘记了从远程 URL 加载资源是异步的

    因此,它很可能会在您调用 addResource 和 getResources 之后从服务器加载资源,这就是您看不到任何内容的原因。 (我认为这就是你所说的“不工作”和“有问题”的意思——你对实际问题非常模糊。)

    如果您制作了一个“添加资源”按钮并将 addResources 和 getResources 的代码移入其中,那么一旦单击该按钮,它们就可以正常工作 - 因为那时其他资源已经有机会从服务器加载。

    例如

    <button type="button" id="addR">Add Resource</button>
    

      document.getElementById("addR").addEventListener("click", function () {
        calendar.addResource({
          id: "eeeee",
          title: "Room EEEEE"
        });
        var testing = calendar.getResources();
        console.log(testing.length);
      });
    

    演示:https://codepen.io/ADyson82/pen/oNYGOMN

    【讨论】:

    • 非常好。我的主要目标是获取加载的资源数量,这就是为什么我想在它渲染后立即调用它。我可以进行另一个 Ajax 调用,但不希望对数据库增加压力。也许我可以使用资源渲染挂钩...
    • 是的,我希望你能做到。或者,如果您使用resources as a function 模式实现资源提要,那么您可以在传递给 fullCalendar 之前拦截结果并对其进行计数。缺点是你必须自己实现 AJAX 代码,但这确实是一个小问题。
    • 最终只使用了加载选项:fullcalendar.io/docs/loading
    最近更新 更多