LoginSignup
1
0

More than 1 year has passed since last update.

【保存版】Vue.jsの基礎、テンプレート構文 v-bind、v-on

Last updated at Posted at 2022-09-26

Vue.jsの基礎を思いだす

備忘録をかねて視覚的にわかりやすいようにVue.jsの動きをまとめていきたいと思います。

今回はMDNを使用しています。

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.6/dist/vue.js"></script>

対象読者様

・Vue.jsを学び始める方
・Vue.jsを学んでいるけど、「あれここどうなってたっけ?」気分の方
・Vue.jsを学んだが、忘れてしまったので、即思い出したい方。

htmlとjs間のデータの受け渡しに関して

v-bind

aタグのhref属性をVueインスタンスのdataから引っ張りたい時

    <div id="app">
        <a v-bind:href="url">Google</a>
    </div>

    省略記法
    <a :href="url">Google</a>
   

js側


new Vue({
	el:'#app',
	data: {
        url: 'https://google.com',
  },
})

v-bind応用(オブジェクトを渡す)

以下のように書きます。


    <div id="app">
        <a v-bind="{ href: 'https://google.com',id: 32}">Google</a>
    </div>

こんな風に色々渡したい時はVueインスタンスのデータにオブジェクトごと保持して簡潔にかけます。

new Vue({
	el:'#app',
	data: {
        googoleObj: { //これを渡したい場合
            href: 'https://google.com',
            id: 32,
        },
  },
})

html


    <div id="app">
        <a v-bind="googoleObj">Google</a>
    </div>



v-onとイベントオブジェクト

マウスカーソルに合わせてマウスの位置を表示させるようなコードを書いてみようと思います。

    <div id="app">
        <p v-on:mousemove="mousePosition">マウスを乗せてください</p>
        <p>X: {{x}} Y:{{y}}</p> //表示領域 {{}}内はJavascript構文が適用できることに注意(着目)
    </div>

    mousePositionメソッドをjs側で作ります


new Vue({
	el:'#app',
	data: {
        x:0,
        y:0,
  },
  methods: {
    mousePosition(event) {
        console.log(event)//ここでeventオブジェクトの様々なプロパティをコンソールで確認できます。
        //自インスタンスのデータにアクセスするにはthisを使います    
        this.x = event.clientX
        this.y = event.clientY
        //clientXYというのは下記のコンソール画面に見られるようなeventオブジェクトのプロパティの一つです
    }
  }
})


スクリーンショット 2022-09-26 15.31.14(2).png

v-onでeventオブジェクトの他に引数を渡したい時の表現方法

x, yを割り算してその値を出力したい!といった場合の記述方法を紹介します

html側に特徴があります。 「$event」というものを使って、あとは好きな引数をポンポン入れていきます。

    <div id="app">
        <p v-on:mousemove="mousePosition($event, 10)">マウスを乗せてください</p>
        <p>X: {{x}} Y:{{y}}</p>
    </div>
new Vue({
	el:'#app',
	data: {
        x:0,
        y:0,
  },
  methods: {
    mousePosition(event, divide) { //ここに新たな引数追加。
        console.log(event, divide) 
        this.x = event.clientX / divide
        this.y = event.clientY / divide
    }
  }
})

終わりに

続きます(笑)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0