jQuery fullCalendar在标题上显示未定义

时间:2017-04-05 09:24:09

标签: javascript jquery reactjs fullcalendar jsx

我在ReactJs组件上使用jQuery fullcalendar。

我在渲染方法上有Date

在componentDidUpdate上,我使用以下代码更新了日历:

ot_daily_date

并在标题上显示“未定义”字符。 我哪里做错了? 以及如何调试未定义字符串的来源?

jquery full calendar

目前, 我做了一个被黑客攻击的解决方案,通过添加以下内容从标题中删除所有未定义的字符串:

date

有没有更好的解决方案?

我正在使用jquery FullCalendar v2.9.1

以下有关事件的示例数据:

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

注意:我最终倾销了jquery完整日历,转而使用react-big-calendar。

10 个答案:

答案 0 :(得分:5)

升级fullCalendar之后我遇到了同样的问题,让我有点想弄清楚,因为近一年来一切正常,我在过去没有任何问题升级过fullCalendar,因为某些原因我不得不包括{ {1}}在我使用fullCalendar的页面中,看到我运行的是一个MVC网站,之前主页(moment.js)引用了_layout.cshtml,现在还不确定为什么不会这样做?{1}}继续工作,就像测试一样,我在实际页面中添加了对时刻的引用,我使用了fullCalendar并且undefindundefined消失了,所以我遇到了另一个与事件有关的问题。

在我的情况下,修复是:

moment.js

在你的情况下可能只是:

@Scripts.Render("~/bundles/dates") 

答案 1 :(得分:3)

将fullCalendar.js从v2.6.1升级到v3.4.0后,我遇到了同样的问题

在我的案例中,问题已解决,包括 fullcalendar.js &amp;在 moment.js

之后 scheduler.min.js

答案 2 :(得分:2)

我在Angular2组件中遇到与fullcalendar v3.4.0和fullcalendar-scheduler v1.6.2相同的问题。我降级到最后一个正常运行的版本fullcalendar v3.1.0。这个问题似乎是在fullcalendar v3.2.0

之上介绍的

答案 3 :(得分:1)

我遇到了同样的问题,但对我而言,这与moment.js无关。

我使用node_modules,加载顺序如下:

require('fullcalendar');
require('fullcalendar-scheduler');

但是,在进行了更多调查之后,我发现fullcalendar-scheduler已经在加载fullcalendar模块,因此我只需要保留调度程序即可,一切工作正常:

require('fullcalendar-scheduler');

答案 4 :(得分:0)

我最终倾销了jquery完整日历,转而使用了反日历。 jQuery在反应方面表现不佳。

答案 5 :(得分:0)

似乎原因是moment.js引起的。在日历的来源中 开始第1247行

(function(module, exports, __webpack_require__) {

Object.defineProperty(exports, "__esModule", { value: true });
var moment = __webpack_require__(0);
var $ = __webpack_require__(3);
var util_1 = __webpack_require__(4);
var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/;
var ambigTimeOrZoneRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/;
var newMomentProto = moment.fn; // where we will attach our new methods
exports.newMomentProto = newMomentProto;
var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods
exports.oldMomentProto = oldMomentProto;
// tell momentjs to transfer these properties upon clone
var momentProperties = moment.momentProperties;
momentProperties.push('_fullCalendar');
momentProperties.push('_ambigTime');
momentProperties.push('_ambigZone');
/*
Call this if you want Moment's original format method to be used
*/
function oldMomentFormat(mom, formatStr) {
    return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js
}
exports.oldMomentFormat = oldMomentFormat;
...

如果将moment.js放在主页上,则第一次加载fullcalendar,结果是正确的,而当我们第二次加载fullcalendar时,由于{{1 }}自己的方法moment.fn已更改。format全局变量。

当每次加载moment时加载moment.js时,它始终使用fullcalendar中的moment

因此,如果我们需要moment.js,则必须与fullcalendar一起使用。

答案 6 :(得分:0)

将其添加到FullCalendar配置中,未定义的标题将被删除

assert*

如果您使用vue更好地将*作为'jquery'中的$导入;

答案 7 :(得分:-1)

我发现使用fullcalander.js而不是fullcalendar.min.js为我解决了这个问题。虽然没有调查原因。

答案 8 :(得分:-1)

可能是语言环境问题。我和pt-br一样有同样的问题。

我通过删除行解决了我的问题

<script src='../fullcalendar.min.js'></script>

离开

<script src='../fullcalendar.js'></script>

答案 9 :(得分:-2)

删除此:

<script src='../fullcalendar.min.js'></script>

并在您的完整日历代码中包括:

$('#calendar').fullCalendar({
header: {
    left: 'prev,next today',
    center: 'title',
    right: 'month,agendaWeek,agendaDay'
},

locale: 'es',
});