Как получить доступ к Vue компоненту из простого ванильного DOM - PullRequest
0 голосов
/ 09 июля 2020

Ситуация

Я строю СПА с Vue. Есть всплывающие уведомления, сделанные с помощью Vue -Noty (https://github.com/renoguyon/vuejs-noty).

У меня есть действие vuex, проверяющее статус сеанса, если он обнаруживает, что сеанс истек , будет отображаться уведомление («Срок действия вашей сессии истек»). Теперь я хочу добавить ссылку («Войдите здесь»), но я столкнулся с проблемой

Это возможно добавить теги <a> к уведомление. они тоже работают нормально.

но Vue SPA не любят простые <a> теги, конечно ...

Мне нужен <router-link>. но это не «просто» работает, его нужно извлечь из файла. vue, чтобы сгенерировать <a>, который работает для одностраничной навигации.

Noty CAN обрабатывать теги, но если я просто добавлю его в Noty, например

this._vm.$noty.error('Your Session has expired, please <router-link to="/login">log in again</router-link>.')

, он, конечно же, выйдет как буквальный тег <router-link>, который не будет работать.

Следующей моей мыслью было поместите туда <a> с onClick="this.$router.push('/login')"

Конечно, это тоже не работает, потому что в простом элементе DOM нет this.

Следующей моей мыслью было : возможно я смогу получить доступ к vue роутеру через window.document, но я не нашел способа сделать это

Вопрос

Как мне вызвать метод $router.push из за пределами компонента или экземпляра vue из «простой модели DOM»?

1 Ответ

1 голос
/ 09 июля 2020

Вы можете попробовать:

app.__vue__.$router.push({'name' : 'home'})
...