【Vue.js】イベント処理でアラートを表示する方法[v-on]

投稿者: | 2018年11月26日


こんにちは。ハイナレです。

今日はVue.jsでイベント処理を実装してみました。
ボタンを押すとアラートが出る、とってもシンプルな処理です。

さすがにシンプルすぎるかなと思ったので、ちょっとストーリー性を持たせてみました!

 

コード

今回もJSFiddleで作ります。だってラクなんだもの。
「Result」タブをクリックすると結果が表示されますよ。

お察しの方も多いと思いますが、コナンの映画「時計じかけの摩天楼」のラストシーンを再現しています。
※ネタバレが嫌な人はボタンを押さないでくださいね。

【HTML】

<div style="text-align:center;">

  <div class="episode">
    <p>あなたは時限爆弾を解体しています。</p>
    <p>最後に赤と青のコードが残りました。</p>
    <p>どちらを切りますか?</p>
  </div>

  <div id="app-108" style="text-align:center;">
    <button class="square_btn red" v-on:click="die">赤</button>
    <button class="square_btn blue" @click="live">青</button>
  </div>

</div>

【JavaScript】

var app108 = new Vue({
  el: '#app-108',
  methods: {
    live: function() {
      alert("おめでとうございます!時限爆弾が止まりました。");
    },
    die:function(){
    	alert("どっかーん!");
    }
  }
})

【CSS】

.episode{
  background-color:#dddddd;
  display:inline-block;
  padding:1rem;
  margin:1rem;
}

.square_btn {
    position: relative;
    display: inline-block;
    padding: 0.5em 1em;
    text-decoration: none;
    color: #FFF;
    border-radius: 4px;/*角の丸み*/
    box-shadow: inset 0 2px 0 rgba(255,255,255,0.2), 0 2px 2px rgba(0, 0, 0, 0.19);
    font-weight: bold;
}

.square_btn:active {
    border-bottom: solid 2px #222222;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.30);
}

.red{
    background: #FF0000;
    border-bottom: solid 2px #8A0808;/*少し濃い目の色に*/
}

.blue{
    background: #0404B4;
    border-bottom: solid 2px #0B0B61;/*少し濃い目の色に*/
}

 

解説

イベント処理には「v-on」または「@」を使います。「@」は「v-on:」の省略形です。

下記の2行で、クリック時のイベントを指定していますね。

<button class="square_btn red" v-on:click="die">赤</button>
<button class="square_btn blue" @click="live">青</button>

コードを日本語訳すると、
「赤ボタンを押したら”die”メソッドを実行。青ボタンを押したら”live”メソッドを実行」
という感じでしょうか。

赤ボタンに「v-on:click=」
青ボタンに「@click=~」
と書いてありますが、どちらも意味は同じです。今回は勉強のため2通りの書き方をしてみました。

どちらを使うのが一般的なんでしょう?両方のメリットとデメリットを知りたいですね。

 

参考サイト

Vue.js入門
CSSで作る!押したくなるボタンデザイン100(Web用)


記事をシェアする