Событие Livewire с выбором даты

У меня есть код ниже для представления компонента Livewire, где я отправляю событие с startDate и endDate,

Я могу получить правильные данные на своей панели управления, но проблема в том, что после повторной визуализации происходит после отправки, кнопка с идентификатором date становится пустой, что означает, что та, которая была создана в средстве выбора даты с функцией cb, не работает, но при начальной загрузке страницы она отображается правильные 30 дней, как определено.

Как я могу повторно инициализировать эту функцию после отправки?

<div class = "d-flex align-items-center px-4">
    <!--begin::Display range-->
    <button type = "btn" class = "btn btn-sm fw-bold btn-secondary d-flex align-items-center px-4 text-gray-700" id = "date" /></button>
    <!--end::Display range-->
    <i class = "ki-duotone ki-calendar-8 fs-2 ms-2 me-0"><span class = "path1"></span><span class = "path2"></span><span
            class = "path3"></span><span class = "path4"></span><span class = "path5"></span><span class = "path6"></span></i>
</div>

@push('scripts')
    <script>
        document.addEventListener('livewire:navigated', function() {
            
            var start = moment().subtract(29, "days");
            var end = moment();

            function cb(start, end) {
                $("#date").html(start.format("MMMM D, YYYY") + " - " + end.format("MMMM D, YYYY"));
            }

            $("#date").daterangepicker({
                startDate: start,
                endDate: end,
                autoApply: true,
                ranges: {
                    "Today": [moment(), moment()],
                    "Yesterday": [moment().subtract(1, "days"), moment().subtract(1, "days")],
                    "Last 7 Days": [moment().subtract(6, "days"), moment()],
                    "Last 30 Days": [moment().subtract(29, "days"), moment()],
                    "This Month": [moment().startOf("month"), moment().endOf("month")],
                    "Last Month": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf(
                        "month")]
                },
                locale: {
                    format: 'YYYY-MM-DD' // Set the desired date format here
                }
            }, cb);

            cb(start, end);

            $('#date').on('apply.daterangepicker', function(ev, picker) {

                // Get the selected date
                const startDate = picker.startDate.format('YYYY-MM-DD');
                const endDate = picker.endDate.format('YYYY-MM-DD');

                const startMoment = moment(startDate, 'YYYY-MM-DD');
                const endMoment = moment(endDate, 'YYYY-MM-DD');

                // Trigger Livewire action with the selected date
                Livewire.dispatch('dashboardDateFilterApplied', {
                    startDate: startDate,
                    endDate: endDate
                });
            });

        }, { once: true });
    </script>
@endpush
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить провод:игнорировать к кнопке, которая будет обрабатываться средством выбора диапазона дат, чтобы запретить Livewire обновлять этот элемент. Обычно я предпочитаю заключать элемент в <div> и применять там Wire:ignore:

<div wire:ignore>

    <button type = "button" 
            class = "btn btn-sm fw-bold btn-secondary d-flex align-items-center px-4 text-gray-700" 
            id = "date"
    >
    </button>

</div>

Обратите внимание, что type="btn" должно быть type="button"

Другие вопросы по теме