4

我有一个用 vue-router 创建的路由。

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

在“元”中,我给它我的页面名称。

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

但现在,我面临一个问题。在我的页面标题中,我想传递一个变量(我的事件的名称)。

meta: {
  title: $nameOfEvent
}

怎么做 ?

谢谢

4

1 回答 1

9

如果您将 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 v-title="title" ></router-view>

零件:

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

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

于 2019-01-15T19:07:54.240 回答