fullcalendar之我思故我在

  首先简单说一下fullcalendar插件,fullcalendar是一个jquery日历插件,主要用来做日历日程会议等的安排展示等。

  因为项目中用到了fullcalendar,也碰到了一些问题,因此记录一下,以备下次使用,也给后来者以帮助。

  要使用fullcalendar,首先要在页面引用关键的js文件

<link href="~/Content/fullcalendar/fullcalendar.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.8.2.js"></script>
<script src="~/Content/fullcalendar/lib/moment.min.js"></script>
<script src="~/Content/fullcalendar/fullcalendar.js"></script>

包括基本样式文件,jquery库,以及Moment.js。moment.js是一个相当强大的时间处理库,这个也导致在开发中遇到了个坑。

页面中添加相应的元素,比如我测试的

<div id="calendar"></div>

在页面的js中加入如下代码,下边会详细做说明

$(‘#calendar‘).fullCalendar({
            header: {
                left: ‘prev,next today‘,
                center: ‘title‘,
                //right: ‘month,agendaWeek,agendaDay‘ //带小时
                right: ‘month,basicWeek,basicDay‘
            },
            height: 500,
            defaultDate: new Date(),
            timezone: "local",
            editable: true,
            eventLimit: true, // allow "more" link when too many events
            eventClick: function (event) {
                var time = moment(event.start);
                var startTime = time.format("YYYY/MM/DD");
                ShowInfo(event.id, event.title, event.state, startTime, event.performance, event.userName);
            },
            @*viewRender: function (view) {//动态查询数据并展示
                var s = moment(view.start);
                var start = s.format("YYYY/MM/DD HH:mm:ss");
                var e = moment(view.end);
                var end = e.format("YYYY/MM/DD HH:mm:ss");
                $("#calendar").fullCalendar(‘removeEvents‘);
                $.post("@Url.Content("~/Operation/GetList")", { userId: "liu", startTime: start, endTime: end }, function (data) {
                    var result = data.data;
                    $.each(result, function (index, term) {
                        $("#calendar").fullCalendar(‘renderEvent‘, term, true);
                    });

                }, "JSON");//把从后台取出的数据进行封装以后在页面上以fullCalendar的方式进行显示
        },*@
            eventAfterRender: function (event, element, view) {
                //$(element).on("dblclick", function () {
                //});
            },

        eventRender: function (event, element) {
        },

            events: function (start, end, timeZone, callback) {
                var s = moment(start);
                var start = s.format("YYYY/MM/DD HH:mm:ss");
                var e = moment(end);
                var end = e.format("YYYY/MM/DD HH:mm:ss");
                $("#calendar").fullCalendar(‘removeEvents‘);
                $.post("@Url.Content("~/Operation/GetList")", { userId: "liu", startTime: start, endTime: end }, function (data) {
                    var result = data.data;
                    //$.each(result, function (index, term) {
                    //    $("#calendar").fullCalendar(‘renderEvent‘, term, true);
                    //});
                    callback(result);

                }, "JSON");//把从后台取出的数据进行封装以后在页面上以fullCalendar的方式进行显示
            }
        });

  fullcalendar的初始化,包括一些事件以及参数的设置

  1、header下的left设置日历左边部分的按钮,表示切换上月,上周下月下周等,right设置日历的基本展示方式,注释的地方有说明,一种精确到小时,一种只是到天。

  2、defaultDate即设置日历初始化时默认显示的月份日期。

  3、timezone这个感觉设置跟没设置区别不大,没有用到,也没做深入了解。

  4、eventlimit设置当一个日期下日程多的时候是否显示More来展示

  重点说一下日程时间数据的展示渲染,一种是通过event相关的事件或者方法来展示,包括events数组,对象,函数等获取数据源,然后绑定到日历,另外一种是viewrender的方法绑定,不推荐后一种,因为有些时候不可控,很难处理。

  events可以是直接的数组,events可以是json对象,也可以是function,本文就是采用的function的方法处理的,因为事件可能很多,因此采用动态切换日历时去加载,所以要取到当前日历视图的起始时间,然后对起始时间的处理。之前版本是fullcalendar将moment.js的方法集成在自身中,直接调用

$.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"),现在需要引用moment.js自己处理,但是也很简单,代码中有详细使用,取到数据之后直接调用callback(data)此时即调用了eventRender方法,该方法可以什么都不写,也可以写自己需要处理的逻辑,也可以使用代码中注释掉的三行,自己去循环然后绑定事件到日历。eventclick是对点击事件时需要做的处理,event参数包含了该event的所有属性方法。问题:fullcalendar 没有对事件做双击事件的封装,呢我们怎么处理?可以在eventAfterRender方法中处理,代码中有注释说明。如果我单击事件,弹出事件详细信息,然后我对事件做了修改,呢么我如何同步该修改到日历呢?这就是事件数据呈现时用events的好处了,此时可以直接调用 $("#calendar").fullCalendar(‘refetchEvents‘); 即可重新渲染事件了。最后推荐下moment.js,如果需要处理js中的日期时间的话,很强大

---恢复内容结束---

时间: 2024-10-12 18:47:29

fullcalendar之我思故我在的相关文章

Web日程管理FullCalendar

fullcalendar是一款jQuery日程管理控件,提供了丰富的属性设置和方法调用,官网下载地址http://fullcalendar.io/download,目前最新版本是2.3.2. 只要调用$('#calendar').fullcalendar(options)即可初始化,初始化配置中events.eventSources.select和eventClick是必须设置项. events和eventSources是数据源配置项,存储数组对象,可以是Arrays/Functions/URL

笛卡尔 我思故我在

我思故我在(I think, therefore I am)的意思是"思考的我(I as the thinking being)是我(the subject)的第一真实所在".这个结论来自于一个简单反证:如果我试图怀疑这个"思考的我"的真实性,那么"怀疑"这个行为本身成为思考的一部分,从而证明了"思考的我"的存在.所以,"思考的我"的真实性是不可怀疑的.

我思故我在

我思故我在 唯心主义观点,法国哲学家笛卡尔的哲学命题,意思是:“当我怀疑一切事物的存在时,我却不用怀疑我本身的思想,因为此时我唯一可以确定的事就是我自己思想的存在” 比较权威的解释是:“我无法否认自己的存在,因为当我否认.怀疑时,我就已经存在!”所以,否认自己的存在是自相矛盾的.而否认和怀疑是一种思考活动,所以他说,我思故我在.并非是平时所说的“我思考,故我存在!” 简单的说就是:我思考,所以我存在,举例说,这个理论认为人在思考时才能证明这个人是存在的,很抽象,比如,你在考虑这个问题,这证明你是

fullcalendar日历控件知识点集合

1.基本的语法: 首先,fullcalendar和JQUERY一样,以面向对象的方式来组织代码.当然,这里的面向对象不过指能够把整个fullcalendar理解为一个类,这个类里包含有非常多的属性.方法.托付(函数回调)作为成员变量.通过为这些成员变量赋值,就可以实例化出一个符合自己需求的fullcalendar实例出来,即终于在浏览器里渲染出的日历.换句话说,我们所做的绝大多数工作就是依照fullcalendar的语法约定去配置出一个符合我们需求的fullcalendar实例.除非对于极少的特

js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js

日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https://fullcalendar.io/docs/event_data/Event_Object/ https://fullcalendar.io/docs/mouse/eventClick/ <!DOCTYPE html> <html> <head> <meta char

FullCalendar应用——整合农历节气和节日

FullCalendar用来做日程管理功能非常强大,但是唯一不足的地方是没有将中国农历历法加进去,今天我将结合实例和大家分享如何将中国农历中的节气和节日整合到FullCalendar中,从而增强其实用性. HTML 首先是要载入jQuery库和fullcalendar插件. <script src='js/jquery-1.9.1.min.js'></script> <script src='js/fullcalendar.min.js'></script>

FullCalendar如何实现minTime,slotDuration动态更新

最近在使用jQuery插件FullCalendar实现一个患者预约医生看病的功能,大致需求如下: 1.  医生首先以周为单位设置自己下个月的出诊时间,包括上班时间,下班时间,每次可预约的时间间隔 2.  患者通过在线预约系统,选择医生的出诊时间并预约 3.  医生可查看自己的预约安排,了解病人的预约情况,使用FullCalendar插件实现效果如下图: 那么现在问题来了,如果医生不同的周或不同月上下班的时间不一样,我们跳转到别的周后,左边的时间轴是否也要跟着改变,遗憾的是FullCalendar

FullCalendar 日历插件中文说明文档

FullCalendar提供了丰富的属性设置和方法调用,开发者可以根据FullCalendar提供的API快速完成一个日历日程的开发,本文将FullCalendar的常用属性和方法.回调函数等整理成中文文档,以供参阅 普通显示设置 属性 描述 默认值 header 设置日历头部信息.如果设置为false,则不显示头部信息.包括left,center,right左中右三个位置,每个位置都可以对应以下不同的配置:title: 显示当前月份/周/日信息prev: 用于切换到上一月/周/日视图的按钮ne

FullCalendar应用——读取JSON数据

开发者可以使用FullCalendar创建强大的日历日程应用,FullCalendar提供了丰富的选项设置和方法调用,使得开发者可以轻松的创建各种功能的日历程序.本文将结合实例使用PHP读取MySQl数据,显示在FullCalendar日历中. 查看演示DEMO 根据FullCalendar日历插件说明文档中的介绍,日历主体事件数据的来源有三,一是直接以javascript数组的形式显示日历事件,二是获取JSON数据形式显示日历事件,三是函数回调的形式显示日历数据,三种调用数据的方式各有所用之处