我想在app.vue中显示不同的导航,具体取决于用户是否已签名 在或没有。我想到了复杂的解决方案,难道没有简单的解决方案或将函数从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>
答案 0 :(得分:0)
通常,App应使用其自己的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>