Madeas
@Madeas
UX/UI designer | Frontend developer

Как обратиться к динамически созданному vue компоненту?

Собственно сабж.

Создал vue компонент и завернул его в динамически созданный объект. Нужно, чтобы блок выводился только при разрешении >768px. Скрипт работает, но когда я ввожу данные объекта, перестает работать -__-. Подскажите, где ошибка?

(function () {

    Vue.component('footer-bar', {
        template: `
        <div id="footer-bar">
            This block nav
        </div>
        `
    })

    const bar = document.createElement('div');
    bar.id = 'navbar';
    const body = document.body;
    body.appendChild(bar);

    new Vue({
        el: '#navbar',
        template: `
        <div id="navbar">
            <footer-bar></footer-bar>
        </div>
        `
    })

    function smallMedia(sm) {
        if (sm.matches) {
            bar.style.display = "block";
        } else {
            bar.style.display = "none";
        }
    }

    const mqSm = window.matchMedia("(min-width: 768px)");
    smallMedia(mqSm);
    mqSm.addListener(smallMedia);

})();
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 3
Planet_93
@Planet_93
Для решения подобных проблем в CSS есть свойство media:

@media screen and (max-width:350px) {
    .object {
        display: none;
    }
}
Ответ написан
Madeas
@Madeas Автор вопроса
UX/UI designer | Frontend developer
Решил. Создал новую переменную const db = document.getElementById('navbar'); все заработало.
Ответ написан
@moreleaksILoveMS
Это не динамически созданный компонент.
Это IIFE-функция определяющая новый компонент.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы