【发布时间】:2021-05-21 23:42:57
【问题描述】:
我有一个使用 Vue CLI 创建的简单的基于 Vue 的网站,我正在尝试弄清楚如何为带有动态路由的视图动态生成页面标题。该站点正在从无头 CMS 中提取 JSON 数据,并且我为“项目”内容类型的详细视图设置了动态路由。我的动态路由设置如下:
// single project vue (dynamic)
{
path: "/projects/:project_name_slug",
name: "single-project",
component: () =>
import(
/* webpackChunkName: "single-project" */ "./views/SingleProject.vue"
),
meta: {
title: "project detail",
}
}
我添加了以下内容,适用于添加静态页面标题:
// show page titles
const DEFAULT_TITLE = "my blog";
router.afterEach((to, from) => {
// document.title = to.meta.title || DEFAULT_TITLE;
document.title = "my blog - " + to.meta.title || DEFAULT_TITLE;
});
就目前而言,在访问项目详细信息视图时,标题将显示为“我的博客 - 项目详细信息”;但是,我希望它从 project_name 的 JSON/字段数据中提取实际项目名称(就像路由路径使用 project_name_slug 一样),但到目前为止我没有尝试过任何工作。例如,使用meta: { title: (route) => route.params.project_name } 只会导致原始函数文本显示在“我的博客-”之后。因此,对于那些动态视图,我希望 to.meta.title 解析为项目名称,创建“我的博客 - {项目名称}”。感谢您在这里提供的任何帮助,如果我需要提供更多详细信息,请告诉我。
*注意:这个问题与this SO thread 中提出的问题不同,因为我的案例涉及使用通过 Axios 请求的 JSON 数据的动态路由
【问题讨论】:
-
@KeithNicholas - 该链接使用静态元,这个问题是关于动态元(链接问题中的标题是动态的,但元不是)
-
您的 JSON 数据在组件生命周期事件之前是否可用,或者您是否在创建组件后从 axios 请求中获取它?
-
@Ohgodwhy 我从 axios 请求中获取数据
-
@KeithNicholas 这是我查看的第一批帖子之一,但在我的情况下似乎没有动态路由
标签: vue.js vue-router vue-cli