Javascript - функция экспорта в Webpack-бис - PullRequest
0 голосов
/ 16 января 2020

в моем проекте Symfony я использую плагин FullCalendar.

В опции eventRender я назначил ему функцию:

        eventRender: function (info) {

            setHiddenVisibled();

        },

Моя функция работает без проблем.

Я использую webpack-encore для управления своими активами, и внезапно я хотел бы поместить свою функцию в файл календаря. js, чтобы его можно было использовать в других обстоятельствах из любого файла. .

Итак, я вставил его

function setHiddenVisibled()
{
    $(document).ready(function()
    {
        var divLegende = $("#calendar-legende");

        if(divLegende.length)
        {
            $("#calendar-legende input.checkbox").each(function(){
                var titre = $(this).attr("id");

                var events = $("[class*="+$(this).attr("id")+"]");

                if(this.checked)
                {
                    events.each(function(){
                        $(this).show();
                    });
                }
                else
                {
                    events.each(function(){
                        $(this).hide();
                    });
                }
            });
        }
    });
}

Но теперь это больше не учитывается. Когда я загружаю календарь, он вызывает ошибку при попытке отрисовки событий, потому что он не может получить доступ к моей функции.

Поэтому я попытался экспортировать его следующим образом

module.exports = {
    setHiddenVisibled
};

Но У меня есть эта ошибка:

Uncaught TypeError: Невозможно назначить только для чтения свойство 'exports' объекта '#'

В моем шаблоне Я:

{{ encore_entry_link_tags('calendar/calendar') }}

<div id="calendar">
    {% include '@Calendar/calendar.html' %}
</div>

{{ encore_entry_script_tags('calendar/calendar') }}

<script>
    document.addEventListener('DOMContentLoaded', () => {
        var calendarEl = document.getElementById('calendar-holder');


        var calendar = new Calendar(calendarEl, {

            //...

            eventRender: function (info) { 
                setHiddenVisibled();

            },

            //...
        });
        calendar.render();
    });
</script>

Спасибо за помощь

...