У меня есть довольно базовая c настройка в моем приложении Vue для моего блога, где у меня есть /blog
, который представляет собой список моих сообщений в блоге, а затем /blog/:slug
, где slug - это слог для отдельный пост (например, mysite.com/blog/my-awesome-blog-post
. Я использую vue-meta
для мета-тегов, и все отлично работает - для всего, кроме тега для отдельных сообщений в блоге. Моя настройка:
App. vue
export default {
metaInfo: {
title: 'Building great web experiences',
titleTemplate: 'My Website | %s',
},
meta: [
{ charset: 'utf-8' },
{ name: 'description', content: 'The website for my organization' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
]
}
Блог. vue
export default {
metaInfo: {
title: 'Blog Home'
},
BlogPost. vue (в соответствии с vue -метами документов )
export default {
data() {
metaDescription: '',
},
metaInfo() {
return {
title: this.post.data.title,
meta: [
{ vmid: 'description', name: 'description', content: this.metaDescription}
]
}
},
...
methods: {
getPost() {
const vm = this;
butter.post
.retrieve(this.$route.params.slug)
.then(res => {
vm.post = res.data;
vm.metaDescription = vm.post.data.summary;
})
.catch(res => {
console.log(res);
});
}
},
Проблема в том, что когда я go перехожу на страницу поста в блоге, метатег заголовка по-прежнему My Site | Blog Home
вместо My Site | My Awesome Blog Post
. Если я добавлю строку stati c для title
, он работает нормально. И, если я проверяю объект, возвращенный функцией metaInfo()
в Vue devtools, он показывает title
с соответствующим значением. Я делаю что-то не так, или это ошибка? Документы это "легко", но это не так.