链接到全日历:https://fullcalendar.io/
因此,我遇到了Moodle中相互引用的AMD模块的问题。我Moodle的文档显示了如何包括第三方AMD模块,实际上这个示例就是我试图包括的示例。自从编写新版本的文档问世以来,它不再能正常工作了。
我已将其“正常工作”,但出现一个错误,即它无法获取插件列表的长度。我怀疑这是因为插件未正确加载,否则是fullcalendar插件本身存在错误。
我已经在线阅读了,在新版本中,您应该加载插件,然后将实例传递给主插件。
config.js 这是用于加载模块的配置文件(Moodle方式):
define([], function(){
window.requirejs.config({
paths: {
"@fullcalendar/core": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/core/main.min',
"@fullcalendar/daygrid": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/daygrid/main.min',
"@fullcalendar/timegrid": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/timegrid/main.min',
"@fullcalendar/list": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/list/main.min',
"@fullcalendar/bootstrap": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/bootstrap/main.min',
"@fullcalendar/moment": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/moment/main.min',
"@fullcalendar/rrule": M.cfg.wwwroot + '/blocks/pxeventcalendar/vendors/fullcalendar-4.2.0/packages/rrule/main.min'
},
shim: {
"core": {exports: "@fullcalendar/core"},
"dayGrid": {exports: "@fullcalendar/daygrid"},
"timeGrid": {exports: "@fullcalendar/timegrid"},
"list": {exports: "@fullcalendar/list"},
"bootstrap": {exports: "@fullcalendar/bootstrap"},
"moment": {exports: "@fullcalendar/moment"},
"rrule": {exports: "@fullcalendar/rrule"}
}
});
});
daygrid.js 然后我添加了每个这样的插件:
define(['block_pxeventcalendar/config', '@fullcalendar/daygrid'], function(unused, dayGrid){
return dayGrid;
});
pxcalendar.js 最后,我创建了自己的模块,在其中使用日历:
define([
'block_pxeventcalendar/fullcalendar',
'block_pxeventcalendar/daygrid',
'block_pxeventcalendar/timegrid',
'block_pxeventcalendar/list'
], function(FullCalendar, dayGrid, timeGrid, list){
return {
init: function(){
new FullCalendar.Calendar(document.querySelector('#calendar'), {
plugins: [dayGrid, timeGrid, list]
});
}
};
});
我当然有一个HTML页面,其中:
<div id="calendar"></div>
我希望日历显示出来,但是我在控制台中收到以下消息:
Cannot read property 'length' of undefined
我知道这是什么意思,但是它指向核心main.js,我认为这是因为插件未正确加载。但是我已经调试了所有插入的插件,并且可以很好地在控制台中找到所有实例。