有没有办法修改事件输出而不是使用 eventContent 完全重新构建它?

问题描述 投票:0回答:1

在 fullCalendar v3 中,带有 HTML 实体的内容在浏览器中正确呈现。使用 fullCalendar v6,它按原样显示:

https://codepen.io/brianhogg/pen/LYqBaWz?editors=001

虽然我想出了一种巧妙的方法来删除 HTML 实体,但看起来放置新格式标题的唯一方法是从头开始重建所有输出。例如使用此SO线程中的解决方案

eventContent: function (arg) {
    const txt = document.createElement("textarea");
    const titleElement = document.createElement('div');
    const timeElement = document.createElement('div');
    timeElement.className = 'fc-event-time';
    timeElement.innerHTML = arg.timeText;
    titleElement.className = 'fc-event-title';
    txt.innerHTML = arg.event.title;
    titleElement.innerHTML = txt.value;
    if (arg.event.start.getDate() !== arg.event.end.getDate()) {
        const frameElement = document.createElement('div');
        frameElement.className = 'fc-event-main-frame';
        const titleContainer = document.createElement('div');
        titleContainer.className = 'fc-event-title-container';
        titleElement.className += ' fc-sticky';
        titleContainer.appendChild(titleElement);
        frameElement.appendChild(timeElement);
        frameElement.appendChild(titleContainer);
        return { domNodes: [ frameElement ] };
    }

    return { domNodes: [ timeElement, titleElement ] };
},

这感觉非常脆弱,我还没有在所有 fullCalendar v6 视图中测试它。

有没有办法获取默认的 eventContent 并过滤它(即替换

.fc-event-title
div 中的值)?或者另一种更简洁的方法来复制 fullCalendar v3 中的功能以输出渲染实体的内容?

javascript html fullcalendar fullcalendar-6
1个回答
0
投票

根据 event render hooks 文档,

eventDidMount
回调提供
el
,它是正在渲染的 HTML 元素的副本。所以这给了你我认为你正在寻找的起点。

这是一个非常简单的使用示例:

eventDidMount: function(arg) {
  console.log(arg.el);
  arg.el.innerHTML += "hello";
}

现场演示:https://codepen.io/ADyson82/pen/YzBOwPd

© www.soinside.com 2019 - 2024. All rights reserved.