在 FullCalendar 回调中查找显示类型
Find display type in FullCalendar callbacks
我正在使用 FullCalendar 显示来自两个来源的事件。我有一个源将它们显示为背景事件,另一个设置为显示为块事件。
这工作正常,但我正在使用 eventClick 回调。当我检查单击事件的 info.event.display 属性 时,它 returns 为 auto
。在此回调中,我需要检查此 属性 以确定是否执行某些操作。
这也是 eventDidMount 回调的问题。我正在使用它,但现在已将其禁用。
IE:在这种情况下,如果显示类型是块,我只希望出现一个模式。
代码:
let calendarEl = document.getElementById('calendar')
let loader = document.querySelector('.calendar-wrapper .loader')
let tooltip
let calendar = new Calendar(calendarEl, {
plugins: [dayGridPlugin],
firstDay: 1,
contentHeight: "auto",
aspectRatio: 1.5,
eventSources: [
{
url: '/api/trips.json',
display: 'background'
},
{
url: '/parks/visits.json',
display: 'block'
}
],
startParam: 'start',
endParam: 'end',
showNonCurrentDates: true,
loading: function (isLoading) {
if (isLoading) {
loader.style.display = 'flex'
} else {
loader.style.display = 'none'
}
},
headerToolbar: {
start: 'title',
center: 'prevYear,nextYear',
end: 'today prev,next'
},
// eventDidMount: function(info) {
// console.log(info.event);
// tooltip = new tippy(info.el, {
// theme: 'light-border',
// trigger: 'mouseenter',
// allowHTML: true,
// content: info.event.extendedProps.tooltipcontent,
// interactive: false,
// interactiveBorder: 0,
// animation: 'shift-away',
// moveTransition: 'transform 0.2s ease-out',
// zIndex: 99999,
// inertia: true,
// placement: 'top',
// touch: 'hold'
// })
// },
eventClick: function(info) {
console.log(info)
info.jsEvent.preventDefault()
let modal = document.querySelector('#modal-container')
modal.innerHTML = info.event.extendedProps.modalcontent
// tooltip.hide()
MicroModal.show('modal-visit')
}
})
有什么建议吗?
这是因为“背景”是事件源的属性,而不是事件。虽然在渲染时可以应用该规则来控制事件的显示方式,但事件本身不会自动将值“background”设置为其自身“display”的值 属性(因为单个事件可能会覆盖任何给定 属性) 的事件源值。
幸运的是,事件将包含对事件源的引用,尽管信息的路径很复杂(但幸运的是,通过将事件对象记录到控制台可以发现),您可以获得“显示”属性 来自它的事件源:
eventClick: function(info) {
alert(info.event.source.internalEventSource.ui.display);
}
我正在使用 FullCalendar 显示来自两个来源的事件。我有一个源将它们显示为背景事件,另一个设置为显示为块事件。
这工作正常,但我正在使用 eventClick 回调。当我检查单击事件的 info.event.display 属性 时,它 returns 为 auto
。在此回调中,我需要检查此 属性 以确定是否执行某些操作。
这也是 eventDidMount 回调的问题。我正在使用它,但现在已将其禁用。
IE:在这种情况下,如果显示类型是块,我只希望出现一个模式。
代码:
let calendarEl = document.getElementById('calendar')
let loader = document.querySelector('.calendar-wrapper .loader')
let tooltip
let calendar = new Calendar(calendarEl, {
plugins: [dayGridPlugin],
firstDay: 1,
contentHeight: "auto",
aspectRatio: 1.5,
eventSources: [
{
url: '/api/trips.json',
display: 'background'
},
{
url: '/parks/visits.json',
display: 'block'
}
],
startParam: 'start',
endParam: 'end',
showNonCurrentDates: true,
loading: function (isLoading) {
if (isLoading) {
loader.style.display = 'flex'
} else {
loader.style.display = 'none'
}
},
headerToolbar: {
start: 'title',
center: 'prevYear,nextYear',
end: 'today prev,next'
},
// eventDidMount: function(info) {
// console.log(info.event);
// tooltip = new tippy(info.el, {
// theme: 'light-border',
// trigger: 'mouseenter',
// allowHTML: true,
// content: info.event.extendedProps.tooltipcontent,
// interactive: false,
// interactiveBorder: 0,
// animation: 'shift-away',
// moveTransition: 'transform 0.2s ease-out',
// zIndex: 99999,
// inertia: true,
// placement: 'top',
// touch: 'hold'
// })
// },
eventClick: function(info) {
console.log(info)
info.jsEvent.preventDefault()
let modal = document.querySelector('#modal-container')
modal.innerHTML = info.event.extendedProps.modalcontent
// tooltip.hide()
MicroModal.show('modal-visit')
}
})
有什么建议吗?
这是因为“背景”是事件源的属性,而不是事件。虽然在渲染时可以应用该规则来控制事件的显示方式,但事件本身不会自动将值“background”设置为其自身“display”的值 属性(因为单个事件可能会覆盖任何给定 属性) 的事件源值。
幸运的是,事件将包含对事件源的引用,尽管信息的路径很复杂(但幸运的是,通过将事件对象记录到控制台可以发现),您可以获得“显示”属性 来自它的事件源:
eventClick: function(info) {
alert(info.event.source.internalEventSource.ui.display);
}