admin管理员组

文章数量:1394968

In VueJs i can always access the current route data. but what if i want to access a different route's data by its name ? suppose i have routes defined,

[
    {
        name: "dashboard",
        path: "/",
        ponent: Dashboard,
        meta: {
            title: "Dashboard",
        }
    },
    {
        name: "login",
        path: "/login",
        ponent: Login,
        meta: {
            title: "Login",
        }
    }
]

now suppose i am in dashboard route. i can access its data by this.$route but what if i want to access the meta data of route named as login ? is there any function which will return me the object of route named login ?

In VueJs i can always access the current route data. but what if i want to access a different route's data by its name ? suppose i have routes defined,

[
    {
        name: "dashboard",
        path: "/",
        ponent: Dashboard,
        meta: {
            title: "Dashboard",
        }
    },
    {
        name: "login",
        path: "/login",
        ponent: Login,
        meta: {
            title: "Login",
        }
    }
]

now suppose i am in dashboard route. i can access its data by this.$route but what if i want to access the meta data of route named as login ? is there any function which will return me the object of route named login ?

Share Improve this question asked Oct 4, 2019 at 11:26 Ashraful IslamAshraful Islam 9357 silver badges17 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

You can use the resolve method to translate route name into a path like this:

const { href } = this.$router.resolve({
  name: 'password-change',
});

or if you want more information:

const { route } = this.$router.resolve({
  name: 'password-change',
});

in return you get an object containing route path, meta, params etc.

You could access the route using this.$router

this.$router.options.routes[0].meta

Of course you have to grab the correct route


UPDATE

Of course you could iterate over your array:

getRoute: function (routeName) {
  let result = this.$router.options.routes.find(i => i.name === routeName)
  if (result == null) {
    this.$router.options.routes.forEach(element => {
      if (element.children) {
        let route = element.children.find(i => i.name === routeName)
        if (route != null) {
          result = route
        }
      }
    })
  }
  return result
},

本文标签: javascriptHow to get a specific route data by route name in VueJsStack Overflow