2017-04-01 13 views
1

私はVueJSの世界への初心者です。VueJS:多くのルートの1つのコンポーネント

私のアプリはvue-routerを使用して経路の変更を処理します。これは設定方法です:

new Router({ 
    routes: [{ 
    path: "/", 
    component: Articles 
    }, { 
    path: "/articles/:category", 
    component: Articles 
    }] 
}); 

ご覧のとおり、同じコンポーネントで2つのルートが処理されています。アイデアはとてもシンプルです。ホームページを開いているときは、どのカテゴリの記事を表示します。カテゴリページにいるときは、そのカテゴリの記事を表示します。

質問は、コンポーネントがルートが変更されたかどうかを、たとえばホームページからカテゴリページに変更する方法ですか?

私は、このソリューションが付属していました:

function loadArticles() {}; 

Vue.component("Articles", { 
    mounted: loadArticles, 
    watch: { "$route": loadArticles } 
}); 

しかし、私は、それが悪い解決策だと思います。ここで

+0

なぜ$ルートオブジェクトを見ても悪い考えですか?ルートがアクティブになった後にデータをフェッチしたい場合は、Vue Router Docsでお勧めします。 –

答えて

1

が、私は私の小さなプロジェクトでやっていることだ、私は単一の記事を表示する

をテンプレートを使用していますこれは私が$route.paramsを取得し、私の.vueファイルで

'/post/:id': { 
    name: 'post', 
    component: require('./components/article.vue') 
}, 

私のルータです記事のidを取得するために私のready機能でそれを表示しました。

$.get('api/posts/' + this.$route.params.id, function(data){ 
      myPost.current = data; 
     }) 

categoryパラメータを取得し、それに従ってテンプレートをレンダリングする必要があります。

0

それは次のようになります。

watch: { 
    '$route' (to, from) { 
     if (this.$route.params.category) { 
      this.loadArticles(category); 
     } else { 
      this.loadArticles(); 
     } 
    } 
} 

'時計' をhere, in docsをお勧めします。

関連する問題