vue.jsの新機能でSPAを構築しようとしています。基本的には、私のバックエンドから、APIエンドポイントへのエイリアスを持つすべてのルートを定義します。それらの多くは同じコンポーネントを使用しています。データは、router.beforeEachとvue-resourceで取得されます。vue、js vue-router 2コンポーネントのデータが更新されない
私はルートから同じテンプレートを共有する別のルートにナビゲートすると、私のルータービューは更新されません。ここで
は私のコードです:
<script>
var data = {
content: null
}
const site = {
template:'<div>{{this.title}}</div>',
data: function() {
return data.content.body
}
}
const home = {
template:'<div>{{this.title}}</div>',
data: function() {
return data.content.body
}
}
const routes = [
{ path: '/api/12.json', component: home, alias: '/' },
{ path: '/api/4.json', component: site, alias: '/projekte' },
{ path: '/api/5.json', component: site, alias: '/projekte/projekt-1' },
{ path: '/api/7.json', component: site, alias: '/projekte/projekt-2' },
{ path: '/api/6.json', component: site, alias: '/projekte/projekt-3' },
{ path: '/api/8.json', component: site, alias: '/agentur' },
{ path: '/api/9.json', component: site, alias: '/lab' },
{ path: '/api/10.json', component: site, alias: '/kontakt' },
]
const router = new VueRouter({
routes
})
router.beforeEach((to, from, next) => {
Vue.http.get(to.matched[0].path).then((response) => {
data.content = response;
console.log(data.content);
next();
}, (response) => {
data.content = {
'body': {
'title': 'Error 404'
}
};
next();
});
})
const app = new Vue({
router
}).$mount('#app')
</script>
VUE-ルータのマニュアルは、グローバルナビゲーションガードは外defindedできることを示している[リンク](https://router.vuejs.org/en/advanced/navigation-guards.html) – janthoma
はい、あなたは出来る。しかし、あなたのコードをアプリ内に入れることをお勧めします。これにより、チームメンバーがより理解しやすくなり、各コンポーネントの所有権を別の人に割り当てることができるため、状況が制御されます。それは技術的なものよりも実用的な利点です。 – Mani