Fullcalendar v4 выдает следующую ошибку при загрузке в веб-компонент молнии - PullRequest
0 голосов
/ 16 мая 2019

загрузил скрипт core / main.js, daygrid / main.js, daygrid / main.css, core / main.css и получил следующую ошибку при загрузке

Uncaught TypeError: незаконный вызов бросает в https://flow -momen введите описание изображения здесь tum-5169.lightning.force.com / resource / 1557998143000 / PA_rSp__FullCalendar: 6: 1128

.......

import { LightningElement } from 'lwc';

import fullcalendar from '@salesforce/resourceUrl/FullCalendar';

import fullcalendarcss from '@salesforce/resourceUrl/fullcalendarcss';

import daygrid from '@salesforce/resourceUrl/daygrid';

import daygridcss from '@salesforce/resourceUrl/daygridcss';

  import { loadScript, loadStyle }

                    from'lightning/platformResourceLoader';

 export default class Lwccalendar extends LightningElement 
 {

    renderedonce=false;

    renderedCallback()

    {

       if(this.renderedonce===true)

       {

         return;

       }

       this.renderonce=true;

       alert("here");

       Promise.all([

       loadScript(this, fullcalendar),


       loadScript(this, daygrid ),


       loadStyle(this, fullcalendarcss),        
       loadStyle(this, daygridcss)
       ])
        .then(() => {
            alert("here");
            this.rendercalendar();
        }).catch(error => {

              alert(error.message);
        });



}

rendercalendar()
{
    alert("here");
    let calendarEl=this.template.querySelector(`[data-id="calendar"]`);
    alert("got the dom");
    const calendarobj = new FullCalendar.Calendar(calendarEl, {

      plugins: [ 'dayGrid' ]
      });

      calendarobj.render();
      alert("render complete");
    }

}

...

1 Ответ

0 голосов
/ 05 июля 2019

Я подозреваю, что здесь могут быть две вещи: 1) Я полагаю, что FullCalendar требует и jQuery, и moment.js. Вы также захотите загрузить их и 2Я подозреваю, что происходит нечто странное при загрузке dayGrid в том же вызове Promise.all, что и базовая библиотека.Попробуйте вместо этого:

Promise.all([
   loadScript(this, fullcalendar),
   loadStyle(this, fullcalendarcss)        
])
.then(() => {
    // load the FC plugin in the callback of the initial Promise.all
    Promise.all([
        loadScript(this, daygrid),
        loadStyle(this, daygridcss)
    ])
    .then(() => {
        this.rendercalendar();
    })
    .catch(error => {
        throw error;
    });
}).catch(error => {
    alert(error.message);
});

У меня тоже была проблема с этим, но у меня все заработало после загрузки, как указано выше.Я понятия не имею, почему это так, поскольку Promise.all гарантированно строго заказан.Очень странно!

edit: Оказывается, библиотеки jQuery и Moment требуются только до версии v4.Кроме того, хотя приведенный выше код помог мне загрузить плагин FullCalendar в веб-компонент Lightning, я не смог заставить работать selectable: true , даже после импорта плагина взаимодействия .В итоге я вернулся к версии 3.7.0 FullCalendar, которая прекрасно работала (хотя требовала jQuery и Moment).

...