JavaScript fullCalendar插件在gcal.js中读取'applyAll'未定义

Ed *_*nce 5 javascript jquery fullcalendar

我试图在JavaScript中使用fullcalendar插件的Google日历模块.当我尝试加载谷歌日历时,控制台显示:

Uncaught TypeError: Cannot read property 'applyAll' of undefined
Run Code Online (Sandbox Code Playgroud)

错误发生在gcal.js的第23行:

21| var fc = $.fullCalendar;
22| console.log($.fullCalendar);
23| var applyAll = fc.applyAll;
Run Code Online (Sandbox Code Playgroud)

我添加的console.log()返回$ .fullCalendar为undefined,然后fc.applyAll也返回undefined.我对JS的了解还不足以完全理解这个文件中发生了什么,我不确定出了什么问题.

这是我的HTML:

<head>
  <link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
  <script src='fullcalendar/lib/jquery.min.js'></script>
  <script src='fullcalendar/gcal.js'></script>
  <script src='fullcalendar/lib/moment.min.js'></script>
  <script src='fullcalendar/fullcalendar.js'></script>
  <link href='style.css' rel='stylesheet' />
</head>
<body>
  <div id='calendar'></div>
</body>
Run Code Online (Sandbox Code Playgroud)

我的JavaScript:

    $(document).ready(function() {
      $('#calendar').fullCalendar({
        googleCalendarApiKey: 'my-api-key',
        events: {
          googleCalendarId: 'my-calendar-id'
        }
      });
    });
Run Code Online (Sandbox Code Playgroud)

我已经下载了最新版本的gcal.js(该文件似乎存在问题,该网站提供了最新版本的链接).

Dan*_*nce 9

问题在于您导入库文件的顺序.

fullcalendar是一个jQuery插件,通常意味着它最终将作为jQuery对象的属性,例如$.fullCalendar.

现在,gcal文件依赖于那里的属性,因此它可以访问它上面的.applyAll方法,但是,在加载gcal.js之前加载fullcalendar.js.

如果您更改这样的顺序,它可以正常工作.

<script src='fullcalendar/lib/jquery.min.js'></script>
<script src='fullcalendar/lib/moment.min.js'></script>
<script src='fullcalendar/fullcalendar.js'></script>
<script src='fullcalendar/gcal.js'></script>
Run Code Online (Sandbox Code Playgroud)

根据经验,首先尝试将您知道的文件没有依赖项(它们不依赖于其他库).