Я хочу показать другую навигацию в app.vue в зависимости от того, подписан ли пользователь в или нет. я пришел к сложным решениям, нет ли простого решения if else или функции передачи из main.js в vue.js? заранее спасибо
#main.js
Vue.loggedIn=true
new Vue({
router,
render: h => h(App)
}).$mount('#app')
#App.vue
<template>
<div id = "app">
<div v-if = "Vue.loggedIn" id = "nav">
<router-link to = "/about">About</router-link> |
<router-link to = "/register">Register</router-link> |
<router-link to = "/login">Login</router-link> |
<router-link to = "/profile">profile</router-link>
</div>
<div v-else id = "nav">
...
..
</div>
<router-view/>
</div>
</template>
Я тоже это сделал. App.vue не меняет навигацию. они не связаны, я думаю.. пытаюсь понять это





Как правило, приложение должно использовать свои собственные элементы data, поэтому, если вы определите loggedIn как один, вы должны получить желаемое поведение. Поскольку это ваш модуль верхнего уровня, я не ожидаю, что вы захотите передать его в качестве реквизита, хотя это тоже сработает.
const App = {
data() {
return {
loggedIn: false
};
},
template: '#app-template',
mounted() {
setTimeout(() => this.loggedIn = true, 2500);
}
};
new Vue({
render(h) {
return h(App);
}
}).$mount('#app')<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id = "app">
</div>
<template id = "app-template">
<div id = "nav">
<template v-if = "loggedIn">
This is the logged in one
</template>
<template v-else>
This is the not logged in one.
</template>
</div>
</template>
Почему вы храните
loggedInв глобальномVue, а не в своем экземпляреdata?