The sky is the limit

Vue.js、PHP、Java、Cordova、Monacaを中心にハイブリッドアプリ開発、PWA開発など効率的なWEB、iOS、Androidアプリ開発の情報を共有します。

【vue-router】router-link でクリックイベントが反応しない【 v-on:click / @click】

【vue-router】router-link でクリックイベントが反応しない【 v-on:click / @click】

f:id:duo-taro100:20160218004611p:plain

タイトル通りで、vue-routerを使っている場合に、router-linkにクリックイベント(v-on:click / @click)を定義しても、反応しません。
そんな時にどうしたら良いか、2つの方法でご紹介します。

ネイティブのクリックイベントを使う

ここでの問題は、router-linkではVueイベントのv-on:click / @clickをサポートしていないということです。
なので、ネイティブのクリックイベントを呼び出します。
その方法は、後ろに「native」をつけるだけです。

<router-link v-on:click.native="doSomething()" to="/path">Something</router-link>

これでできるはずです。
この方法が気にくわない場合には、もう一つ方法があります。

router-linkの中にもう要素を追加して、そこにクリックイベントを定義する

こちらはVueイベントを使うことができます。
方法は簡単で、router-link内にspanタグなどを用意して、そこにクリックイベントを設定するものになります。

<router-linkto="/path">
    <span  v-on:click.native="doSomething()">Something</span>
</router-link>

どちらの実装も簡単ですね。
以上です。