2018.8.9

vue-routerでURLパラメーターの変更を検知する

vue-routerでURLパラメーターが変更されたタイミングで、なにかしらの処理を実行したい場合の方法についてです。

コード

コードは以下の通りです。


<script>
    const routes = [
        { path: '/' },
        { path: '/article/:id' },
    ];

    const router = new VueRouter({
        mode: 'history',
        routes
    });

    window.onload = function () {
        initApp();
    }

    function initApp() {
        const app = new Vue({
            el: '#vue-app',
            router,
            template: '#example-component',
            data: function () {
                return { }
            },
            mounted() {
                this.loadArticle()
            },
            methods: {
                loadArticle() {
                    console.log(this.$route.params.id);
                }
            },
            watch: {
                '$route'(to, from) {
                    this.loadArticle()
                }
            }
        });
    }
</script>

<script type="text/x-template" id="example-component">
    <div>テスト</div>
</script>

パラメーターに変更があった場合、「watch」で定義したメソッドが呼び出されます。

※ 上記のコードは作成済みのソースから必要そうな箇所を抜き取っただけなので、動作しない可能性があります。参考レベルにとどめておいてください。

参考リンク

Vue.js】関連記事