如何在Vuejs中动态管理页面标题?

Jer*_*emy 3 laravel vue.js

我构建了一个应用程序。我有一个带有我页面标题的标题。目前,我使用视图路由器来定义我的标题。

{
    path: '/events',
    name: 'events',
    component: Events,
    meta: {
        title: 'Liste des événements'
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的刀片视图中,在我的 header.blade.php 中,我这样做是为了显示标题

 <h2 class="header__title title-header">
    @{{ $route.meta.title }}
 </h2>
Run Code Online (Sandbox Code Playgroud)

它工作但是当我有动态数据时,它必然不起作用。例如,当我发布帖子时,我该怎么做才能获得头衔?

    {
    path: '/events/:id',
    component: Event,
    name: 'Event',
    meta: {
        title: 'my dynamic title',
        page: 'event',
    },
Run Code Online (Sandbox Code Playgroud)

如何恢复帖子页面的标题?我的帖子中有帖子的名称,但我无法从标题中访问它...

在此处输入图片说明

我无权访问其他组件。这些是来自 element-ui 的组件。

先感谢您

lju*_*adr 11

在您的路由器中,在export default router您可以添加之前

router.beforeEach((toRoute, fromRoute, next) => {
  window.document.title = toRoute.meta && toRoute.meta.title ? toRoute.meta.title : 'Home';

  next();
})
Run Code Online (Sandbox Code Playgroud)

这将读取元标题(如果存在)并更新页面标题。

或者你可以像这样添加它

const router = new Router({
  beforeEach(toRoute, fromRoute, next) {
    window.document.title = toRoute.meta && toRoute.meta.title ? toRoute.meta.title : 'Home';

    next();
  },
  routes: [
    ...
  ]
})
Run Code Online (Sandbox Code Playgroud)

不要忘记将默认标题值更改Home为其他内容 - 也许是您的项目名称

  • 在获取帖子的 ajax 调用完成后,您需要抓取文章的图块并设置“window.document.title = response.data.title”。您能否提供用于获取帖子的 ajax 调用的代码以及应将哪个帖子字段设置为标题? (2认同)