【问题标题】:How to add Dynamic Title to application - VueJS如何向应用程序添加动态标题 - VueJS
【发布时间】:2020-03-13 16:17:25
【问题描述】:

我已经添加了下面的路由机制

{
    path: '/home',
    meta: { title : 'Welcome Back, ' + profile.userName + ' – Dashboard | A Company' },
    name: 'home',
    component: () => import('@/views/Home.vue'),
},

我需要为每个页面添加标题。但是当我运行应用程序时,我没有看到上述内容。所以我在**Vue.app**中有以下内容@

watch: {
    '$route' (to, from) {
        document.title = to.meta.title || 'A Company'
    }
},

现在,标题加载。但是一旦 API 调用完成,它就无法选择profile.username。

API返回数据后是否可以更改标题?

【问题讨论】:

  • 我认为在纯 vue.js 中是不可能的,但你可以使用 nuxt.js 来解决你的问题。你可以阅读更多关于这个here

标签: typescript vue.js vue-router


【解决方案1】:

API返回数据后是否可以更改标题?

是的,但我不知道你所有的代码,所以我不能准确地写一些你可以复制和粘贴的东西,但你可以调整它直到它工作为止。

主要的变化是让meta.title成为一个函数

{
  path: '/home',
  meta: {
    title: async function() {
      var userName = await getUsernameFromWhereverYoureGettingItFrom()
      return `Welcome Back, ${username} – Dashboard | A Company`
    }
  },
  name: 'home',
  component: () =>
    import ('@/views/Home.vue'),
},

然后调用那个函数

watch: {
    '$route': async (to, from) {
        document.title = to.meta.title ? await to.meta.title() : 'A Company'
    }
},

【讨论】:

  • 我看到您正在路由中进行 API 调用。但对我来说,路线不同,API 也不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多