Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FullCalendar v4将onclick eventListener添加到EventLimit上显示的事件中单击popover_Javascript_Fullcalendar_Popover_Fullcalendar 4 - Fatal编程技术网

Javascript FullCalendar v4将onclick eventListener添加到EventLimit上显示的事件中单击popover

Javascript FullCalendar v4将onclick eventListener添加到EventLimit上显示的事件中单击popover,javascript,fullcalendar,popover,fullcalendar-4,Javascript,Fullcalendar,Popover,Fullcalendar 4,我有一个使用FullCalendar v4 js的自定义开发,我遇到了eventLimitClick方法的问题 当我点击它时,我希望popover中显示的所有事件都有一个自定义的onclickeventListener,以便我在另一个自定义弹出窗口中显示当前事件的传统信息 这是我目前的方法: eventLimitClick : function(info){ info.segs.forEach(function(seg){ seg.el.querySelector('di

我有一个使用FullCalendar v4 js的自定义开发,我遇到了
eventLimitClick
方法的问题

当我点击它时,我希望popover中显示的所有事件都有一个自定义的
onclick
eventListener,以便我在另一个自定义弹出窗口中显示当前事件的传统信息

这是我目前的方法:

eventLimitClick : function(info){
    info.segs.forEach(function(seg){
        seg.el.querySelector('div.fc-content').addEventListener('click', function(event){
            console.log('event definition', event);
        });
    });
    return "popover";
}
但这是将侦听器添加到我在日历中已经看到的元素中。我也试过用
hiddenSegs
代替segs,但它不起作用

那么,有没有任何方法可以实现这一点,而不必创建包含所有事件的自定义弹出窗口

**编辑**[包含代码]

日历对象

     {
        locale : 'en',
        plugins : ['dayGrid','timeGrid','list','interaction'],
        header : {
            left : 'prev,next today',
            center : 'title',
            right : 'dayGridWeek, dayGridMonth, dayGridDay'
        },
        allDaySlot : false,
        aspectRatio : 1.8,
        displayEventTime : false,
        editable : false,
        navLinks : true,
        eventLimit : true,
        views : {
            dayGridMonth : {
                eventLimit : 2
            }
        },
        events : this.eventLIST,
        datesRender : this.calendarviewRender,
        eventClick : this.calendareventClick,
        eventRender : this.calendareventRender
     }
datesRender
event单击
eventRender
函数:

calendarviewRender = (info) => {
    //set current and end dates
    this.endDate = info.view.activeEnd;
    this.currentDate = info.view.activeStart;
    //retrieve fresh event/task info
    this.refreshCalendar();
}
calendareventClick = (info) => {
    this.info = {id : info.event.id,
                 tipo : info.event.extendedProps.tipo,
                 tipoObj : info.event.extendedProps.tipoObj,
                 isClosed : info.event.extendedProps.isClosed && info.event.extendedProps.isClosed !== null ? (info.event.extendedProps.isClosed === 'false' ? false : true) : false,
                 campos : info.event.extendedProps.lCamposInfo};
    //allow second button
    this.info.displaysecondbutton = !this.info.isClosed && this.info.tipoObj === 'Task';
    //allow popup display
    this.allowpopup = true;
    info.jsEvent.preventDefault();
}
calendareventRender = (info) => {       
    let html = "<i class='fa fa-" + info.event.extendedProps.icon + " fa-lg'></i>";
    info.el.querySelector('div.fc-content').style.cssText = 'height: 100%;';
    //if month view apply padding
    if(info.view.type.includes('dayGrid')) info.el.querySelector('div.fc-content').classList.add('slds-p-around_x-small');
    //center elements
    info.el.querySelector('div.fc-content').classList.add('slds-align_absolute-center');
    //append icon
    info.el.querySelector('div.fc-content').innerHTML = html;
}
calendarviewRender=(信息)=>{
//设置当前日期和结束日期
this.endDate=info.view.activeEnd;
this.currentDate=info.view.activeStart;
//检索新的事件/任务信息
这个.refreshCalendar();
}
calendareventClick=(信息)=>{
this.info={id:info.event.id,
tipo:info.event.extendedProps.tipo,
tipoObj:info.event.extendedProps.tipoObj,
isClosed:info.event.extendedProps.isClosed&&info.event.extendedProps.isClosed!==null?(info.event.extendedProps.isClosed==='false'?false:true):false,
campos:info.event.extendedProps.lCamposInfo};
//允许第二个按钮
this.info.displaysecondbutton=!this.info.isClosed&&this.info.tipoObj==='Task';
//允许弹出显示
this.allowpoup=true;
info.jsEvent.preventDefault();
}
calendareventRender=(信息)=>{
设html=“”;
info.el.querySelector('div.fc-content').style.cssText='height:100%;';
//如果月份视图应用填充
if(info.view.type.includes('dayGrid'))info.el.querySelector('div.fc-content').classList.add('slds-p-around_x-small');
//中心元素
info.el.querySelector('div.fc-content').classList.add('slds-align_absolute-center');
//附加图标
info.el.querySelector('div.fc-content')。innerHTML=html;
}

我还删除了
eventLimitClick

根据您的评论,我看到您正在使用lightning web组件

在与LWC就salesforce合作时,我面临着与您相同的问题

我可以通过在daygrid包中编辑main.js并在Popover被隐藏时添加延迟来解决这个问题

下面是一段代码

function Popover(options) {
        var _this = this;
        this.isHidden = true;
        this.margin = 10; // the space required between the popover and the edges of the scroll container
        // Triggered when the user clicks *anywhere* in the document, for the autoHide feature
        this.documentMousedown = function (ev) {
            if (_this.el && !_this.el.contains(ev.target)) {
                setTimeout(function () {
                    _this.hide();
                }, 1000);
            }
        };
        this.options = options;
    }
函数从main.js的第100行开始。
我正在使用Fullcalendar v4

我不知道您为什么需要这个?fullCalendar已经有一个
eventClick
回调(),每当单击任何事件时,该回调将自动触发,而不管它是否在eventLimit popover内。@ADyson是的,但我的问题是当我单击popover事件时,
eventClick
不起作用。所以我尝试了不同的方法真的吗?我认为使用eventClick没有问题。演示:。也许是你做了别的什么事情,使它停止了工作?我建议解决这个问题,而不是尝试一个脆弱的解决办法。如果您需要帮助解决此问题,请提供代码的详细信息,以便我们了解原因。@ADyson我正在
lightning web components
上使用它,并且是FullCalendar v4。我在控制台上没有任何错误。我会尝试一些稍微简单一点的方法,比如发出
警报
,然后检查是否works@ADyson我还用源代码更新了我的问题。谢谢你的帮助!