Как управлять роутером находясь в App.vue
Здравствуйте, я могу сменить страницу роутера с момошю
this.$router.push({ name: "Empty" }); Но как мне ето сделать нахотясь в App.vue (без export default) То что находится у меня в App.vue <script> this.$router.push({ name: "Empty" }); //$router == undefined </script> |
Добавить "export default", очевидно:
<script> export default { created() { this.$router.push({ name: "Empty" }); } } </script> Только зачем? Весь базовый роутинг должен в маршрутах и прописан быть. Там есть редиректы. |
Aetae, Спасибо, ето работает, но могу ли я в таком случае вызвать из функции вне export default функцыю которая находится в methods, тоесть сделать так
<script> export default { methods: { changePage() { this.$router.push({ name: "Empty" }); }, }, }; vue.changePage(); //Проблемма в том что контекст Vue-undefined, a this не является контекстом vue Component </script> Тоесть первая функция вызова должна находится на глобальном контексте, ето необходимо из-за rage-браузера (движка для создания интерфейса игры gta 5 - рейдж может дергать функции находящиеся в глобальном контексте), (дергая функции он может передавать в них параметры - ето такой аналог сокетам и фетч) Так как ето игра а не сайт роутером приходится управлять с помощю функций а не ссылок |
|
А могу ли я создать чтото типа события с параметрамми?
|
Ну например: https://www.npmjs.com/package/vue-bus
|
Спасибо вам за подсказки, долго експерментируя я придумал такой костыль
в main.js я добавиил const app = new Vue({ router, store, i18n, render: (h) => h(App), }).$mount("#app"); global.app = app; global.app.$router.push({ name: "Authorization" }); Тоесть я присвоил глобальной переменной екземпляр app, и могу вызывать его из глобального контекста - единственное что глобальные функции исполняются перед созданием app, тоесть при попытке обратится к global.app я могу получить undefined если app ище небыл создан Могу ли я сделать чтото что позволит моим функциям исполнятся только после того как app создан ну или сделать так чтоб app создавался быстрее них |
Очевидный ответ - не вызывать функции раньше времени.
Особенно роутер - так делать вообще нельзя. Любые умолчание и редиректы в самих роутах прописывайте, как я указал ещё в первом ответе. Вы можете создать new Vue в самом начале индексного файла, а $mount сделать потом. Однако если вызовы будут ещё раньше то это не поможет - распределяйте приоритеты загрузки и выполняйте свои функции только когда vue готов. Вы можете захреначить в самом верху страницы костыль, который предварительно вместо методов подставляет пустышки, или какое-нить извращение типа function getNoop(){ const retSelf = function() { return noop }; const noop = new Proxy(retSelf, { set: () => true, defineProperty: retSelf, get: retSelf }); return noop; } global.app = getNoop();, но зачем если туда можно саму инициализацию Vue поместить? |
Часовой пояс GMT +3, время: 21:37. |