فهرست سرفصل‌های Vue
خانه (HOME) معرفی (Intro) دایرکتیوها (Directives) v-bind (v-bind) v-if (v-if) v-show (v-show) v-for (v-for) رویدادها (Events) v-on (v-on) متدها (Methods) تغییردهنده های رویداد (Event Modifiers) فرم ها (Forms) v-model (v-model) بایندینگ CSS (CSS Binding) ویژگی های محاسبه شده (Computed Properties) واچرها (Watchers) قالب ها (Templates) چرا، چگونه و راه اندازی (Why, How and Setup) اولین صفحه SFC (First SFC Page) کامپوننت ها (Components) پراپس (Props) کامپوننت های v-for (v-for Components) $emit() ($emit()) ویژگی های عبوری (Fallthrough) (Fallthrough Attributes) استایل Scoped (Scoped Styling) کامپوننت های محلی (Local Components) اسلات ها (Slots) v-slot (v-slot) اسلات های Scoped (Scoped Slots) کامپوننت های پویا (Dynamic Components) Teleport (Teleport) درخواست HTTP (HTTP Request) رفرنس های تمپلیت (Template Refs) هوک های چرخه عمر (Lifecycle Hooks) Provide/Inject (Provide/Inject) مسیریابی (Routing) ورودی های فرم (Form Inputs) انیمیشن ها (Animations) انیمیشن با v-for (Animations with v-for) بیلد (Build) Composition API (Composition API) ویژگی های توکار (Built-in Attributes) ویژگی 'is' ('is' Attribute) ویژگی 'key' ('key' Attribute) ویژگی 'ref' ('ref' Attribute) کامپوننت های توکار (Built-in Components) <KeepAlive> (<KeepAlive>) <Teleport> (<Teleport>) <Transition> (<Transition>) <TransitionGroup> (<TransitionGroup>) المان های توکار (Built-in Elements) <component> (<component>) <slot> (<slot>) <template> (<template>) نمونه کامپوننت (Component Instance) $attrs ($attrs) $data ($data) $el ($el) $parent ($parent) $props ($props) $refs ($refs) $root ($root) $slots ($slots) $emit() ($emit()) $forceUpdate() ($forceUpdate()) $nextTick() ($nextTick()) $watch() ($watch()) دایرکتیوها (Directives) v-bind (v-bind) v-cloak (v-cloak) v-for (v-for) v-html (v-html) v-if (v-if) v-else-if (v-else-if) v-else (v-else) v-memo (v-memo) v-model (v-model) v-on (v-on) v-once (v-once) v-pre (v-pre) v-show (v-show) v-slot (v-slot) v-text (v-text) گزینه های نمونه (Instance Options) داده ها (data) متدها (methods) محاسبه شده ها (computed) watch (watch) پراپس (props) emits (emits) expose (expose) هوک های چرخه عمر (Lifecycle Hooks) beforeCreate (beforeCreate) created (created) beforeMount (beforeMount) mounted (mounted) beforeUpdate (beforeUpdate) updated (updated) beforeUnmount (beforeUnmount) unmounted (unmounted) errorCaptured (errorCaptured) renderTracked (renderTracked) renderTriggered (renderTriggered) activated (activated) deactivated (deactivated) serverPrefetch (serverPrefetch) مثال ها (Examples) تمرین ها (Exercises) کوییز (Quiz) سیلابس (Syllabus) برنامه مطالعه (Study Plan) سرور (Server) گواهینامه (Certificate)
نتیجه‌ای برای جستجو یافت نشد.
Vue

Vue — v-on (v-on)

آخرین بروزرسانی: 1404/08/21

v-on (v-on)

«v-on» برای مدیریت رویداد (Event) است. رویداد یعنی اتفاقی مثل کلیک یا تایپ. با v-on می گوییم: کدام رویداد و بعد چه کاری انجام شود.

شروع سریع با رویداد v-on

مثال لامپ: با کلیک، وضعیت روشن/خاموش عوض می شود. «بولی (Boolean)» یعنی فقط درست یا نادرست.

<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>

مشاهده در ادیتور

نکته: با تغییر lightOn، نمایش لامپ فوراً عوض می شود. این رفتار واکنشی است.

رویداد oninput با v-on

هر بار تایپ، شمارنده زیاد می شود. «ورودی (Input)» یعنی داده واردشده توسط کاربر.

<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>

مشاهده در ادیتور

رویداد mousemove با v-on

با جابه جایی ماوس روی جعبه، رنگ پس زمینه تغییر می کند. «استایل (Style)» یعنی ظاهر عناصر.

<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>

مشاهده در ادیتور

استفاده از v-on داخل v-for

روی هر مورد کلیک کن و تصویر متناسب را ببین. «حلقه (Loop)» یعنی تکرار روی آرایه.

<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>

مشاهده در ادیتور

میان بُر v-on با @

می توانیم به جای v-on از «@» استفاده کنیم. این میان بُر کوتاه تر است.

<button @:click="lightOn = !lightOn">Switch light</button>

مشاهده در ادیتور

گام های عملی

  1. رویداد مناسب را انتخاب کن؛ مثلاً click یا input.
  2. روی عنصر بنویس v-on:event و کد واکنش را بده.
  3. داده را در data نگه دار و نتیجه را نمایش بده.

جمع بندی سریع

  • v-on رویداد را می گیرد و کد را اجرا می کند.
  • روی ورودی ها، ماوس و کلیک کار می کند.
  • داخل v-for هم به خوبی جواب می دهد.
  • میان بُر @ نوشتن را سریع تر می کند.

برای ادامه مسیر: صفحه رویدادها در Vue و سپس متدها را ببین.