3 min read

Catatan Belajar Vue : Event & Method

Saat halaman di-load itu merupakan event, saat tombol diklik itu merupakan event, intinya interaksi antara HTML ( DOM ) dengan javascript itu biasa disebut Event. Penggunaan event di Vue itu cukup mudah, pada Vue bisa menggunakan directive v-on, lalu diikuti oleh eventyang akan digunakan. Bisa dilihat pada contoh script tulisan sebelumnya

<input type="text" v-on:input="cssClass = $event.target.value">

Pada contoh di atas saya menggunakan event input. Pada tulisan kali ini saya coba dulu yang paling sederhana yaitu klik. Pertama siapkan struktur html yang baru.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Event & Method</title>
    <script src="https://vuejs.org/js/vue.min.js"></script>
  </head>
  <body>
    <div id="app">
      <button>
        Klik
      </button>
      <br>
      
            Jumlah : {{ countClick }}
        
    </div>
  </body>
  <script>
   new Vue({
      el: '#app',
      data: {
        countClick: 1
      }
     })
  </script>
</html>

Rencananya setiap ngeklik tombol tersebut jumlah klik akan bertambah, caranya cukup mudah tambahkan directive v-on pada < button > sehingga hasilnya akan seperti berikut.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Event & Method</title>
    <script src="https://vuejs.org/js/vue.min.js"></script>
  </head>
  <body>
    <div id="app">
      <button v-on:click="countClick = countClick + 1">
        Klik
      </button>
      <br>
      
      
            Jumlah : {{ countClick }}
        
      
    </div>
  </body>
  <script>
   new Vue({
      el: '#app',
      data: {
        countClick: 1
      }
     })
  </script>
</html>

Hasilnya akan seperti ini

Silahkan kunjungi dokumentasi Vue untuk mengetahui sejumlah event yang bisa dikombinasikan dengan directive v-on.

Selanjutnya adalah method. Pada contoh di atas saya menggunakan hal yang sederhana, sekadar nambah 1 klik setiap kali event dilakukan, tapi jika nanti ternyata harus ada proses lainnya yang lebih njelimet tentu memaksakan langsung di dalam v-on bukanlah hal yang tepat, saat itulah method digunakan. Penggunaan method pada Vue berarti pada instance Vue perlu ditambahkan properti methods seperti ini.

<script>
   new Vue({
      el: '#app',
      data: {
        countClick: 1
      },
      methods: {
        methodName() {
        	//masukan proses di sini
        }
      }
     })
  </script>

Anggap saja sekarang dengan fungsi yang barusan saya mau jika jumlah klik genap maka background berwarna biru dan ganjil berwarna merah.

!DOCTYPE html>
<html lang="en">
  <head>
    <title>Event & Method</title>
    <script src="https://vuejs.org/js/vue.min.js"></script>
    <style>
      .red {
        background-color: red;
      }
      .blue {
        background-color: blue;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button v-on:click="changeBackground">
        Klik
      </button>
      <br>
        <div v-bind:class="cssClass" style="width:250px;">
        
            Jumlah : {{ countClick }}
        
        </div>
    </div>
  </body>
  <script>
   new Vue({
      el: '#app',
      data: {
        cssClass: "",
        countClick: 0
      },
      methods: {
        changeBackground() {
          //masukan proses di sini
          var count = this.countClick + 1;
          this.countClick = count;
          if(count % 2 == 0)
          {
            this.cssClass = "blue";
          }else{
            this.cssClass = "red";
          }
        }
      }
     })
  </script>
</html>

 

Ada yang berbeda dari isi directive v-on, jika yang sebelumnya langsung menarget properti di dalam data, sekarang target di dalam v-on spesifik ke method.


Referensi :

https://www.tutorialspoint.com/javascript/javascript_events.htm

https://vuejs.org/v2/guide/events.html#Listening-to-Events

https://vuejs.org/v2/guide/events.html#Method-Event-Handlers