ルートごとにウィンドウのタイトルを動的に設定したいので、各_routes: []
_子オブジェクトに_meta: { title: ... }
_オブジェクトがあります。例えば:
_routes: [
{
path: 'profile/:id',
name: 'Profile',
component: Profile,
meta: {
title: function (to, cb) {
const profileId = parseInt(to.params.id);
// ... do stuff ...
}
}
}
]
_
このタイトル関数をafterEach
フックで呼び出します。
_router.afterEach((to) => {
document.title = 'My Site';
if (to.meta && to.meta.title) {
to.meta.title(router.app, to, (result) => { document.title += ' | ' + result; });
}
});
_
_... do stuff ...
_の部分で、ミックスイン_GetAndStore.js
_からloadProfile(profileId)
というメソッドを呼び出したいと思います。ルーターのミックスインにGetAndStore
を追加しましたが、loadProfile
は使用できません(_this.loadProfile
_は未定義です)。 GetAndStore
をグローバルにロードし、同じ結果で再試行しました。過去1時間に考えられるすべての構成を試しましたが、このセットアップ内からGetAndStore
からメソッドにアクセスする方法がまったく見つかりませんでした。
_routes->element->meta->title
_内からミックスインメソッドにアクセスするために、不足しているものや再構築する必要があるものについてのアイデアはありますか?
たぶん、プロファイルコンポーネント内のbeforeRouteEnterでそれを試すことができます。したがって、メタタイトルを取得してページのタイトルを設定すると、ミックスインメソッドにアクセスできるようになります。
beforeRouteEnter (to, from, next) {
if (to.meta && to.meta.title) {
to.meta.title(router.app, to, (result) => { document.title += ' | ' + result; });
}
},
ドキュメント: https://router.vuejs.org/guide/advanced/navigation-guards.html#in-component-guards