【问题标题】:Jquery FullCalendar 2 week view Next prev buttonsJquery FullCalendar 2 周视图 Next prev 按钮
【发布时间】:2012-03-14 19:14:40
【问题描述】:

我已经实现了here 概述的 2 周视图,我想知道是否有人可以告诉我如何/在哪里更改上一个/下一个按钮以仅将日历移动 2 周而不是下个月?不确定在哪里更新 fullcalendar.js。

【问题讨论】:

  • 在这里查看这个答案stackoverflow.com/questions/2219381/…
  • @jeffreyhamby 这不是我想要的。单击时日历会更新,但它会按月进行默认更改。我的观点是两周,我需要改变两周而不是下个月的第一周。
  • 您必须更改 JS 代码或添加代码才能这样做。请查看 fullcalendar.js 。当您单击下一个/上一个完整日历代码时,会检查当前视图并根据视图移动。使用萤火虫或适当的工具并使用断点检查。或者研究一下 fullcalendar.js
  • @Admirer,是的,这是正确的。我希望看看是否有人确切知道在哪里,因为似乎其他人已经实施了我的观点。我仍在研究它以及其他事情,如果我在其他人之前找到答案,我会发布答案。谢谢

标签: javascript jquery fullcalendar


【解决方案1】:

想通了。问题是我使用的解决方案是基于月视图,而它可能应该基于周视图。

首先,确保视图的所有信息都列在默认值中

// time formats
titleFormat: {
    month: 'MMMM yyyy',
    twoweek: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}",
    week: "MMM d[ yyyy]{ '—'[ MMM] d yyyy}",
    day: 'dddd, MMM d, yyyy'
},
columnFormat: {
    month: 'ddd',
    twoweek: 'ddd',
    week: 'ddd M/d',
    day: 'dddd M/d'
},

.

buttonText: {
    prev: ' ◄ ',
    next: ' ► ',
    prevYear: ' << ',
    nextYear: ' >> ',
    today: 'today',
    month: 'month',
    twoweek: '2 week',
    week: 'week',
    day: 'day',
    resourceDay: 'designers'
},

这是我的 2 周视图代码

fcViews.twoweek = TwoWeeksView;

function TwoWeeksView(element, calendar) {
var t = this;

// exports
t.render = render;


// imports
BasicView.call(t, element, calendar, 'twoweek');
var opt = t.opt;
var renderBasic = t.renderBasic;
var formatDates = calendar.formatDates;



function render(date, delta) {
    if (delta) {
        addDays(date, delta*7);
    }
    var start = addDays(cloneDate(date), -((date.getDay() - opt('firstDay') + 7) % 7));
    var end = addDays(cloneDate(start), 7*2);
    var visStart = cloneDate(start);
    var visEnd = cloneDate(end);
    var weekends = opt('weekends');
    if (!weekends) {
        skipWeekend(visStart);
        skipWeekend(visEnd, -1, true);
    }

    t.title = formatDates(
        visStart, 
        addDays(cloneDate(visEnd), -1), 
        opt('titleFormat')
    );
    t.start = start;
    t.end = end;
    t.visStart = visStart;
    t.visEnd = visEnd;
    renderBasic(2, 2, weekends ? 7 : 5, true);
}

}

这里的关键区别是最后一行:renderBasic(2,2,weekends ? 7 : 5, true);

如果您不更新默认视图的信息,则 formatdates 中的参数未定义并且存在问题。周视图和月视图之间存在一些差异,这使得基于周视图的两周视图更好。它成为两者之间的某种混合。希望这对正在寻找完整 2 周视图修复的任何人有所帮助。

这样调用:

 $('#calendar').fullCalendar({
        header: {
            left:'prev, next',
            center: 'title',
            right: 'twoweek'
        },
        defaultView: 'twoweek',
        weekMode:'fixed'
  });

【讨论】:

  • 太棒了!我必须在底部对renderBasic 的调用中将第二个参数更改为7,以便它每周显示7 列(天)而不是2
  • 谢谢你,帮我省了一个下午 :) 你的最后一行有错误,应该是renderBasic(2, weekends ? 7 : 5, true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多