2016-12-15 67 views
2

的具体路线我是新的VueJS,我使用的VueJS 2 Webpack模板。 我试图从登录组件重定向到家庭组件,如果登录成功,我尝试了很多东西,但我仍然收到错误。 这里是我的路由:查看在Vuejs 2

const router = new VueRouter({ 
    mode: 'history', 
    routes: [{ 
    'name': 'home', 
    path: '/', 
    component: require('./components/Home.vue'), 
    beforeEnter: (to, from, next) => { 
     if (!localStorage.getItem('user')) { 
     next('/login') 
     } 
    } 
    }, { 
    'name': 'profile', 
    path: '/profile', 
    component: require('./components/Profile.vue'), 
    beforeEnter: (to, from, next) => { 
     if (!localStorage.getItem('user')) { 
     next('/login') 
     } 
    } 
    }, { 
    'name': 'login', 
    path: '/login', 
    component: require('./components/Login.vue') 
    }, { 
    'name': 'new', 
    path: '/new', 
    component: require('./components/New.vue'), 
    beforeEnter: (to, from, next) => { 
     if (!localStorage.getItem('user')) { 
     next('/login') 
     } 
    } 
    }, { 
    'name': 'signup', 
    path: '/signup', 
    component: require('./components/Signup.vue') 
    }, { 
    'name': 'logout', 
    path: '/logout', 
    beforeEnter: (to, from, next) => { 
     localStorage.removeItem('user') 
     next('/login') 
    } 
    }, { 
    'name': 'article', 
    path: '/article/:id', 
    component: require('./components/Article.vue'), 
    beforeEnter: (to, from, next) => { 
     if (!localStorage.getItem('user')) { 
     next('/login') 
     } 
    } 
    }] 
}) 

而这正是我试图重定向到家里组件:

this.$router.replace(this.$router.go('/')) 

而且我得到了这个错误:

Uncaught (in promise) TypeError: Cannot read property 'name' of undefined(…) 

回答

6

this.$router.replace()期望的位置。

this.$router.go('/')遍历浏览器历史记录,因此它不应该返回任何内容。它基本上就像window.history.go(Number)

如果您想要替换您所在的页面,您可能需要执行this.$router.replace('/')

另外。我会看看这部分的文档。您可以在beforeEach中放置大量重复代码。

https://router.vuejs.org/en/advanced/meta.html

+0

现在工作正常!非常感谢你。 – jemlifathi

+0

完全没问题! –

+0

太棒了!像魅力一样工作。 – victorkurauchi