【问题标题】:How to use FullCalendar with Laravel Mix如何在 Laravel Mix 中使用 FullCalendar
【发布时间】:2020-10-14 19:16:06
【问题描述】:

我已经使用 npm 安装了 Fullcalendar 库包。

npm i --save @fullcalendar/core 
    @fullcalendar/interaction @fullcalendar/daygrid 
    @fullcalendar/timegrid @fullcalendar/list @fullcalendar/bootstrap

我也将它包含在 app.js 中。

require('@fullcalendar/core');
require('@fullcalendar/bootstrap');
require('@fullcalendar/list');
require('@fullcalendar/timegrid');
require('@fullcalendar/daygrid');
require('@fullcalendar/interaction');

但是,当尝试使用以下代码创建日历时:

var calendarEl = document.getElementById('calendar');
calendar = new Calendar(calendarEl, {
    plugins: [ 'interactionPlugin', 'bootstrapPlugin', 'dayGridPlugin', 'timeGridPlugin', 'listPlugin'],
});

我得到了错误...

Uncaught ReferenceError: Calendar is not defined at HTMLDocument.<anonymous>new Calendar

.

我做错了什么?

我的 webpack.mix.js 看起来像这样:

const mix = require('laravel-mix');
mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css').version();

编辑:

将我的 app.js 设置为:

window.FullCalendar = require('@fullcalendar/core');
window.bootstrapPlugin = require('@fullcalendar/bootstrap');
window.interactionPlugin = require('@fullcalendar/interaction');
window.listPlugin = require('@fullcalendar/list');
window.timeGridPlugin = require('@fullcalendar/timegrid');
window.dayGridPlugin = require('@fullcalendar/daygrid');

我现在收到此错误: Uncaught TypeError: Cannot read property 'length' of undefined

calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [bootstrapPlugin, interactionPlugin, listPlugin, timeGridPlugin, dayGridPlugin],
locale : 'pt-br',
})

【问题讨论】:

    标签: laravel fullcalendar laravel-mix fullcalendar-5


    【解决方案1】:

    一段时间过去了,但我今天遇到了同样的问题,我已经解决了。

    1. 安装依赖项:
        npm install @fullcalendar/core @fullcalendar/daygrid @fullcalendar/timegrid @fullcalendar/list
    
    1. 在 javascript 中导入:注意:我使用了一个名为 calendar.js 的单独文件并将其放入 resources/js/calendar.js,因此我已将此添加到 app.js
    require('./calendar');
    
    1. 编辑文件calendar.js
        import { Calendar } from '@fullcalendar/core';
        import dayGridPlugin from '@fullcalendar/daygrid';
        import timeGridPlugin from '@fullcalendar/timegrid';
        import listPlugin from '@fullcalendar/list';
        import itLocale from '@fullcalendar/core/locales/it'; //italian language and config
    
    1. 编辑文件添加(在导入部分之后)
    document.addEventListener('DOMContentLoaded', function() {
        const calendarEl = document.getElementById("calendar");
    
        let calendar = new Calendar(calendarEl, {
            locale: itLocale,
            plugins: [ dayGridPlugin, timeGridPlugin, listPlugin ],
            initialView: 'dayGridMonth',
            headerToolbar: {
                left: 'prev,next today',
                center: 'title',
                right: 'dayGridMonth,timeGridWeek,listWeek'
            },
            // go ahead with other parameters
        });
    
        calendar.render();
    });
    
    1. 在我的视图文件中:
    <div id="calendar"></div>
    
    1. 在我的页脚部分:
    <script src="{{ asset('js/app.js') }}"></script>
    
    1. 运行npm run dev(或prodwatch,视情况而定)

    最后说明:我使用了DOMContentLoaded,因为我的 app.js 脚本位于页脚中。如果放在 head 标签中,我不知道这是否也有效。

    【讨论】:

      猜你喜欢
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2019-12-14
      • 2020-08-03
      • 2020-07-27
      • 1970-01-01
      • 2021-08-19
      相关资源
      最近更新 更多