我在ReactJs组件上使用jQuery fullcalendar。
我在渲染方法上有Date
在componentDidUpdate上,我使用以下代码更新了日历:
ot_daily_date
并在标题上显示“未定义”字符。 我哪里做错了? 以及如何调试未定义字符串的来源?
目前, 我做了一个被黑客攻击的解决方案,通过添加以下内容从标题中删除所有未定义的字符串:
date
有没有更好的解决方案?
我正在使用jquery FullCalendar v2.9.1
以下有关事件的示例数据:
<div id="calendar"></div>
注意:我最终倾销了jquery完整日历,转而使用react-big-calendar。
答案 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',
});