vue-router實現登陸和跳轉到指定頁面,vue-router 傳參

定義路由的時候能夠配置 meta 字段:數組

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      children: [
        {
          path: 'bar',
          component: Bar,
          // a meta field
          meta: { requiresAuth: true }
        }
      ]
    }
  ]
})

那麼如何訪問這個 meta 字段呢?ui

首先,咱們稱呼 routes 配置中的每一個路由對象爲 路由記錄。路由記錄能夠是嵌套的,所以,當一個路由匹配成功後,他可能匹配多個路由記錄this

例如,根據上面的路由配置,/foo/bar 這個 URL 將會匹配父路由記錄以及子路由記錄。spa

一個路由匹配到的全部路由記錄會暴露爲 $route 對象(還有在導航鉤子中的 route 對象)的 $route.matched 數組。所以,咱們須要遍歷 $route.matched 來檢查路由記錄中的 meta 字段。code

下面例子展現在全局導航鉤子中檢查 meta 字段:component

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // this route requires auth, check if logged in
    // if not, redirect to login page.
    if (!auth.loggedIn()) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }//把要跳轉的地址做爲參數傳到下一步
      })
    } else {
      next()
    }
  } else {
    next() // 確保必定要調用 next()
  }
})

其實到這和網上大多數的都說的差很少,大多也都只降到這裏router

若是你想實現點哪裏跳哪裏仍是差一步,若是你點user欄目 user欄目是須要登錄的 也就是 meta: { requiresAuth: true } 而後跳轉登陸 你登錄後直接跳user 而不是轉跳到首頁什麼的,你就須要在登錄後再執行一個操做對象

 $.getJSON(
                      localPath + '/sys/user/info',
                      function (r) {
                        if (r.code == 0) {
                          let redirect = decodeURIComponent(this.$route.query.redirect || '/');
                          this.$router.push({//你須要接受路由的參數再跳轉
                            path: redirect
                          });
                        } else {
                          console.error('登陸失敗')                         
                        }
                      }
              );

順便的小提示 如何用路由傳遞參數,必須傳遞一個對象,不過彷佛只有傳遞name屬性纔有效,path是無效的blog

this.$router.push({
            name:'order',
            params:{
              orderNum:NO
            }
          }); 

接受上面路由傳遞的參數路由

let oid =this.$route.params.orderNum;
相關文章
相關標籤/搜索