在 meta 中将 var 传递给 vue 路由器

Pass var to vue router in meta

我用 vue-router 创建了一条路线。

{
    path: '/events/:id',
    component: Event,
    name: 'Event',
    meta: {
        title: 'Design Web'
    }
},

在"meta"中,我给它我的页面名称。

我可以这样调用我的页面标题:$route.meta.title

但是现在,我遇到了一个问题。在我的页面标题中,我想传递一个变量(我的活动名称)。

meta: {
  title: $nameOfEvent
}

怎么办?

谢谢

如果将title属性定义为一个函数是可以的:

{
  meta: { title: route => { /* return custom title based on route, store or anything */ } }
}

router.beforeEach((to, from, next) => {
  if (to.meta.title) {
    document.title = to.meta.title(to);
  }
  next();
})

Codepen:https://codepen.io/anon/pen/roRmdo?editors=1111(您需要检查内部 iframe 以查看标题更改)。

或创建指令:

Vue.directive('title', {
  inserted: (el, binding) => document.title = binding.value,
  update: (el, binding) => document.title = binding.value
})

然后在 router-view 组件上使用该指令:

<router-view v-title="title" ></router-view>

组件:

export default {
  data(){
    return {
      title: 'This will be the title'
    }
  }
}

来源:https://github.com/vuejs/vue-router/issues/914