如何访问常见的javascript模块中的当前路由元字段 - VueJs

Muk*_*mar 6 vue.js vue-router

我在申请中有以下路线:

const router = new Router({
  mode: 'history',
  scrollBehavior: () => ({ y: 0 }),
  routes: [
    { path: '/', component: HomePage, meta: { pageType: 'home'} },
  ],
});
Run Code Online (Sandbox Code Playgroud)

并有共同的js模块:

const trackEvent = {
  getFields: () => {
   //here need to access meta fields(pageType) of current route. how is it possible ?
  }
}
export default trackEvent;
Run Code Online (Sandbox Code Playgroud)

我想访问公共模块中的元字段.这怎么可能 ?

tha*_*ksd 14

meta物业可通过this.$route.metaVue实例访问.只需将其传递给getFields方法即可.

export default {
  created() {
    let meta = getFields(this.$route.meta);
  }
}
Run Code Online (Sandbox Code Playgroud)

getFields: (meta) => {
  console.log(meta);

  return meta.fields.pageType; // not sure what you're trying to return exactly
}
Run Code Online (Sandbox Code Playgroud)

如果您无法传入当前路由,则需要导入该router对象并从中获取当前路由:

import router from 'path/to/your/router'

const trackEvent = {
  getFields: () => {
    let meta = router.currentRoute.meta;
    console.log(meta);

    return meta.fields.pageType; // not sure what you're trying to return exactly
  }
}
export default trackEvent;
Run Code Online (Sandbox Code Playgroud)