Vue v-on

Oddiy JavaScript-da hodisalarni (events) boshqarish kabi, Vue-dagi v-on direktivasi brauzerga quyidagilarni aytadi:

  1. qaysi hodisani tinglash kerak ("klik", "tugmachani pastga tushirish", "sichqonchani bosish" va boshqalar)
  2. bu voqea sodir bo‘lganda nima qilish kerak
ULASHISH

v-on-dan foydalanishga misollar

Keling, ba’zi misollarni ko‘rib chiqaylik v-on turli hodisalar (events) va bu hodisalar (events) sodir bo‘lganda ishga tushirish uchun turli kodlar bilan qanday foydalanish mumkinligini ko‘rib chiqaylik.

Eslatma: Voqea sodir bo‘lganda yanada rivojlangan kodni ishga tushirish uchun Vue usullarini joriy qilishimiz kerak. Ushbu qo‘llanmaning keyingi sahifasida Vue metodlari haqida bilib oling.


voqeani bosing

v-on direktivasi bizga ko‘rsatilgan hodisalarga asoslangan harakatlarni bajarishga imkon beradi.

Element bosilganda amalni bajarish uchun v-on:click dan foydalaning.

Misol

v-on direktivasi

<div id="app">
  <div id="lightDiv">
    <div v-show="lightOn"></div>
    <img src="img_lightBulb.svg">
  </div>
  <button v-on:click="lightOn = !lightOn">Switch light</button>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        lightOn: false
      }
    }
  })
  app.mount('#app')
</script>
O‘zingiz sinab ko‘ring »

oninput hodisasi

V-on:input dan foydalaning, masalan, matn maydoni ichidagi tugmachani bosish kabi element kirishda amalni bajarish.

Misol

Matn kiritish maydoni uchun tugmalar sonini hisoblang:

<div id="app">
  <input v-on:input="inpCount++">
  <p>{{ 'Input events occured: ' + inpCount }}</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        inpCount: 0
      }
    }
  })
  app.mount('#app')
</script>
O‘zingiz sinab ko‘ring »


mousemove hodisasi

Sichqoncha ko‘rsatkichi element ustida harakat qilganda amalni bajarish uchun v-on:mousemove funksiyasidan foydalaning.

Misol

Sichqoncha ko‘rsatkichi har safar harakatlansa,

elementining fon rangini o‘zgartiring:

<div id="app">
  <p>Move the mouse pointer over the box below</p>
  <div v-on:mousemove="colorVal=Math.floor(Math.random()*360)"
       v-bind:style="{backgroundColor:'hsl('+colorVal+',80%,80%)'}">
  </div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        colorVal: 50
      }
    }
  })
  app.mount('#app')
</script>
O‘zingiz sinab ko‘ring »

v-for siklida v-on-dan foydalaning

Siz v-for sikli ichida v-on direktivasidan ham foydalanishingiz mumkin.

Massivning elementlari v-on qiymatidagi har bir iteratsiya uchun mavjud.

Misol

Oziq-ovqat massiviga asoslangan massivni ko‘rsating va tasvir manbasini o‘zgartirish uchun massiv elementidagi qiymatdan foydalanadigan har bir element uchun bosish hodisasini qo‘shing.

<div id="app">
  <img v-bind:src="imgUrl">
  <ol>
    <li v-for="food in manyFoods" v-on:click="imgUrl=food.url">
      {{ food.name }}
    </li>
  </ol>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
  const app = Vue.createApp({
    data() {
      return {
        imgUrl: 'img_salad.svg',
        manyFoods: [
          {name: 'Burrito', url: 'img_burrito.svg'},
          {name: 'Salad', url: 'img_salad.svg'},
          {name: 'Cake', url: 'img_cake.svg'},
          {name: 'Soup', url: 'img_soup.svg'}
        ]
      }
    }
  })
  app.mount('#app')
</script>
O‘zingiz sinab ko‘ring »

v-on uchun stenografiya

"V-on" ning qisqartmasi oddiygina "@" dir.

Misol

Bu yerda biz "v-on" o‘rniga "@" yozamiz:

<button @:click="lightOn = !lightOn">Switch light</button>
O‘zingiz sinab ko‘ring »

Biz ushbu qo‘llanmada @ sintaksisidan biroz keyinroq foydalanishni boshlaymiz.


Vue mashqlari

O‘zingizni mashqlar bilan sinab ko‘ring

Mashq:

Kodni to‘ldiring, shunda tugma bosilganda tasvir o‘zgaradi.

<template>
  <button ="showImg = !showImg">
    Toggle image
  </button>
  <img src="flower.jpg" alt="flower" v-show="showImg">
</template>

<script>
  export default {
    data() {
      return {
        : true
      }
    }
  }
</script>

Mashqni boshlash



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!