Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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 overlay不';不能显示正确的值_Javascript_Jquery_Fullcalendar - Fatal编程技术网

Javascript FullCalendar overlay不';不能显示正确的值

Javascript FullCalendar overlay不';不能显示正确的值,javascript,jquery,fullcalendar,Javascript,Jquery,Fullcalendar,嗨,我正在使用fullCalendar插件来显示日历。因为我有一个覆盖“窗口”,每当一个人悬停在一个对象上时,它就会被激活。它显示额外的信息,例如该元素的位置和描述 它可以很好地处理原始日历设置和数据以及常规的日、周和月视图。但我也不想创建一个功能,删除周末,只显示一个工作周(周一至周五) 我决定通过销毁日历并使用新的默认设置(周末:false)重新初始化它,然后再次渲染事件来实现这一点。这是一个通过点击按钮激活的功能。这就是覆盖开始失败的地方。取决于我在单击按钮之前所做的操作,它要么只显示一个

嗨,我正在使用fullCalendar插件来显示日历。因为我有一个覆盖“窗口”,每当一个人悬停在一个对象上时,它就会被激活。它显示额外的信息,例如该元素的位置和描述

它可以很好地处理原始日历设置和数据以及常规的日、周和月视图。但我也不想创建一个功能,删除周末,只显示一个工作周(周一至周五)

我决定通过销毁日历并使用新的默认设置(周末:false)重新初始化它,然后再次渲染事件来实现这一点。这是一个通过点击按钮激活的功能。这就是覆盖开始失败的地方。取决于我在单击按钮之前所做的操作,它要么只显示一个空覆盖层,要么显示我在单击按钮之前悬停在其上的任何对象的信息。因此,无论我将鼠标悬停在哪个对象上,都会显示相同的信息。有人对什么地方出了问题以及我是否可以改变什么有任何意见吗

覆盖功能:

$scope.overlay = $('.fc-overlay');
$scope.alertOnMouseOver = function( event, jsEvent, view ){
    $scope.event = event;
    $scope.overlay.removeClass('left right top').find('.arrow').removeClass('left right top pull-up');
    var wrap = $(jsEvent.target).closest('.fc-event');
    var cal = wrap.closest('.calendar');
    var left = wrap.offset().left - cal.offset().left;
    var right = cal.width() - (wrap.offset().left - cal.offset().left + wrap.width());
    var top = cal.height() - (wrap.offset().top - cal.offset().top + wrap.height());
    if( right > $scope.overlay.width() ) {
        $scope.overlay.addClass('left').find('.arrow').addClass('left pull-up')
    }else if ( left > $scope.overlay.width() ) {
        $scope.overlay.addClass('right').find('.arrow').addClass('right pull-up');
    }else{
        $scope.overlay.find('.arrow').addClass('top');
    }
    if( top < $scope.overlay.height() ) {
        $scope.overlay.addClass('top').find('.arrow').removeClass('pull-up').addClass('pull-down')
    }
    (wrap.find('.fc-overlay').length == 0) && wrap.append( $scope.overlay );
/*remove weekends from calendar*/
$scope.removeWeekends = function (noWeekend) {
    $(".calendar").fullCalendar('destroy');
    $(".calendar").fullCalendar({
        defaultView: 'agendaWeek',
        height: 400,
        editable: true,
        weekends: noWeekend,
        weekNumbers: true,

        header:{
            left: 'prev',
            center: 'title',
            right: 'next'
        },
        dayClick: $scope.alertOnEventClick,
        eventDrop: $scope.alertOnDrop,
        eventResize: $scope.alertOnResize,
        eventMouseover: $scope.alertOnMouseOver
    });

    $scope.renderAcademy($scope.academy);
    $scope.renderCourse($scope.events);
}
最后两个函数调用只是简单的forloops,将元素呈现为:

$scope.renderCourse= function (data) {
    for (var j = 0; j < data.length; j++) {
        $('.calendar').fullCalendar('renderEvent',{
            id: data[j].id,
            title: data[j].title,
            start:  data[j].start,
            end: data[j].end,
            className: data[j].className,
            editable: false,
            location: data[j].location,
            info: data[j].info
        }, true)
    }
};
$scope.renderCourse=函数(数据){
对于(var j=0;j

这实际上带来了一个小问题:有人能解释一下为什么我按此顺序调用这两个函数时效果很好,但是如果我先调用renderCourse函数,第二个函数似乎永远不会被调用吗?

Fullcalendar已经支持通过将周末设置为false来隐藏周末的功能。。您无需销毁/重新创建对象

更改:

editable: true,
weekends: noWeekend,
致:


Fullcalendar已经支持通过将周末设置为false来隐藏周末。。您无需销毁/重新创建对象

更改:

editable: true,
weekends: noWeekend,
致:


好吧,我不知道是否有人会读到这篇文章,因为它已经有几天了,但现在开始了

我已更改日历的初始化方式:

$scope.uiConfig = {
    calendar:{
        height: 450,
        editable: true,
        weekNumbers: true,

        header:{
            left: 'prev',
            center: 'title',
            right: 'next'
        },
        dayClick: $scope.alertOnEventClick,
        eventDrop: $scope.alertOnDrop,
        eventResize: $scope.alertOnResize,
        eventMouseover: $scope.alertOnMouseOver
    }
};
HTML:

HTML:

但是鼠标覆盖层现在根本不起作用。或者它没有显示任何内容。它是从对象中获取的值,因为如果我将鼠标悬停在一个按钮上,在其中一个日历对象之前有一个工具提示,它会工作,但只显示所有事件的相同对象值

覆盖的HTML:

<div class="panel bg-white b-a pos-rlt">
        <span class="arrow"></span>
        <div class="h4 font-thin m-b-sm">{{event.title}}</div>
        <div class="line b-b b-light"></div>
        <div><i class="icon-calendar text-muted m-r-xs"></i> {{event.start | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.end'><i class="icon-clock text-muted m-r-xs"></i> {{event.end | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.location'><i class="icon-pointer text-muted m-r-xs"></i> {{event.location}}</div>
        <div class="m-t-sm">{{event.info}}</div>
      </div>

{{event.title}
{{event.start}日期:'medium'}
{{event.end}日期:'medium'}
{{event.location}
{{event.info}

好的,我不知道有没有人会读到这篇文章,因为它已经有几天了,但现在开始了

我已更改日历的初始化方式:

$scope.uiConfig = {
    calendar:{
        height: 450,
        editable: true,
        weekNumbers: true,

        header:{
            left: 'prev',
            center: 'title',
            right: 'next'
        },
        dayClick: $scope.alertOnEventClick,
        eventDrop: $scope.alertOnDrop,
        eventResize: $scope.alertOnResize,
        eventMouseover: $scope.alertOnMouseOver
    }
};
HTML:

HTML:

但是鼠标覆盖层现在根本不起作用。或者它没有显示任何内容。它是从对象中获取的值,因为如果我将鼠标悬停在一个按钮上,在其中一个日历对象之前有一个工具提示,它会工作,但只显示所有事件的相同对象值

覆盖的HTML:

<div class="panel bg-white b-a pos-rlt">
        <span class="arrow"></span>
        <div class="h4 font-thin m-b-sm">{{event.title}}</div>
        <div class="line b-b b-light"></div>
        <div><i class="icon-calendar text-muted m-r-xs"></i> {{event.start | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.end'><i class="icon-clock text-muted m-r-xs"></i> {{event.end | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.location'><i class="icon-pointer text-muted m-r-xs"></i> {{event.location}}</div>
        <div class="m-t-sm">{{event.info}}</div>
      </div>

{{event.title}
{{event.start}日期:'medium'}
{{event.end}日期:'medium'}
{{event.location}
{{event.info}

一般来说,我不想周末去那里。就在这一个按钮上,我不想让他们走。我至少无法在不破坏/重新创建的情况下,将该函数的周末设置更改为false。当我尝试时,日历就消失了。一般来说,我不想周末去那里。就在这一个按钮上,我不想让他们走。我至少无法在不破坏/重新创建的情况下,将该函数的周末设置更改为false。当我尝试时,日历就会消失。使用自定义视图怎么样?类似这样的情况:我不确定它在最初的初始化中是否工作(参见下面的答案)。使用新的初始化,它肯定会工作。但是我现在也可以轻松地将周末设置为真/假,因此不需要这样做。现在的问题更多的是覆盖。使用自定义视图怎么样?类似这样的情况:我不确定它在最初的初始化中是否工作(参见下面的答案)。使用新的初始化,它肯定会工作。但是我现在也可以轻松地将周末设置为真/假,因此不需要这样做。现在的问题更多的是覆盖层。
$scope.removeWeekends = function () {
    $('.calendar').fullCalendar('getView').calendar.options.weekends=false;
};
<div class="panel bg-white b-a pos-rlt">
        <span class="arrow"></span>
        <div class="h4 font-thin m-b-sm">{{event.title}}</div>
        <div class="line b-b b-light"></div>
        <div><i class="icon-calendar text-muted m-r-xs"></i> {{event.start | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.end'><i class="icon-clock text-muted m-r-xs"></i> {{event.end | date:'medium'}}</div>
        <div class="ng-hide" ng-show='event.location'><i class="icon-pointer text-muted m-r-xs"></i> {{event.location}}</div>
        <div class="m-t-sm">{{event.info}}</div>
      </div>