Vue 2 — Как правильно создать экземпляр в нужное время

#vue.js

Вопрос:

Один из экземпляров моего приложения vue, похоже, создается слишком рано. Даже с document.addEventListener('DOMContentLoaded', ...) А. Как следствие, я заметил, что прослушиватели событий неправильно привязаны. Простое @click="test" (где тестовые ссылки на a console.log ) не сработало.

Ниже приведен код, в котором @click это не работает. Это компонент, расположенный в экземпляре vue, созданном на DOMContentReady :

 const navBurger = {
    template: `
        <nav class="burgerNav"">
            <button class="burgerNav__icon" @click="test">
            </button>
        </nav>
    `,
    methods: {
        test: function() {
            console.log('test')
        }
    }
}

export default navBurger
 

Я «решил» проблему, добавив небольшой тайм-аут (200 мс) перед созданием экземпляра в корневой экземпляр этого компонента, но это кажется грязным и хрупким решением. Есть ли какой-нибудь чистый способ создать экземпляр в нужное время ? Мне нужно, чтобы этот экземпляр был готов как можно быстрее, потому что он содержит навигацию, расположенную в заголовке.

Ниже приведен порядок загрузки файлов js. Целевой файл есть assets/js/components/nav/nav.js . Однако изменение этого порядка не решает проблему.

     <!--========== VUE ==========-->
    <script src="<?= url('assets') ?>/js/libraries/vue.js"></script>

    <!--========== SCRIPTS ==========-->   
    <script src="<?= url('assets') ?>/js/components/nav/nav.js" type="module" defer></script>
    <script src="<?= url('assets') ?>/js/shop.js" type="module" defer></script>
    <script src="<?= url('assets') ?>/js/script.js" type="module" defer></script>
    <script src="https://js.stripe.com/v3/" defer></script>
 

Комментарии:

1. Может быть, добавить тип и отложить <script src="<?= url('assets') ?>/js/libraries/vue.js" type="module" defer></script>

2. Можете ли вы поделиться ссылкой на воспроизведение проблемы?

3. @Patfreeze Это не работает. Я думаю, что это было бы трудно воспроизвести, так как это, по-видимому, связано, в частности, с порядком загрузки, поэтому зависит от всех файлов.