فهرست سرفصل‌های 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 — متدها (Methods)

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

متدها (Methods)

«متد (Method)» یعنی تابع مخصوص یک کامپوننت. در «متدهای Vue» کد پیچیده را جدا می نویسیم. سپس با رویدادها اجرا می کنیم. این کار کد را تمیز و قابل فهم می کند.

خاصیت methods در Vue

در شیء اپ، کنار «داده (Data)»، بخشی به نام methods داریم. آن جا توابع را می گذاریم و با this به داده ها دسترسی می گیریم.

const app = Vue.createApp({
  data() {
    return {
      text: ''
    };
  },
  methods: {
    writeText() {
      this.text = 'Hello World!';
    }
  }
});

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

فراخوانی متد با v-on

با «رویداد (Event)» مثل کلیک، متد را صدا می زنیم. متن روی جعبه تغییر می کند.

<div id="app">
  <p>Click on the box below:</p>
  <div v-on:click="writeText">
    {{ text }}
  </div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      text: ''
    };
  },
  methods: {
    writeText() {
      this.text = 'Hello World!';
    }
  }
});
app.mount('#app');
<\/script>

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

نکته: داخل متدها برای دسترسی به data از پیشوند this. استفاده کن.

دریافت شیء رویداد (Event Object)

وقتی رویداد رخ می دهد، شیء «event» خودکار می آید. با آن به اطلاعات کلیک و ماوس دسترسی داری.

<div id="app">
  <p>Move the mouse pointer over the box below:</p>
  <div v-on:mousemove="mousePos"></div>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      xPos: 0,
      yPos: 0
    };
  },
  methods: {
    mousePos(event) {
      this.xPos = event.offsetX;
      this.yPos = event.offsetY;
    }
  }
});
app.mount('#app');
<\/script>

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

بستن استایل با v-bind

با v-bind:style رنگ پس زمینه را به موقعیت ماوس وابسته کن.

<div
  v-on:mousemove="mousePos"
  v-bind:style="{ backgroundColor: 'hsl(' + xPos + ',80%,80%)' }">
</div>

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

نمونه ورودی: textarea و متد

با هر «ورودی (Input)» متن در داده ها به روز می شود. نمایش همزمان انجام می شود.

<div id="app">
  <textarea v-on:input="writeText" placeholder="Start writing.."></textarea>
  <span>{{ text }}</span>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      text: ''
    };
  },
  methods: {
    writeText(event) {
      this.text = event.target.value;
    }
  }
});
app.mount('#app');
<\/script>

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

ارسال آرگومان به متد

یک متد، چند دکمه؛ هر دکمه مقدار متفاوت می فرستد. شمارش را کنترل کن.

<div id="app">
  <img src="img_moose.jpg">
  <p>{{ 'Moose count: ' + count }}</p>
  <button v-on:click="addMoose(+1)">+1</button>
  <button v-on:click="addMoose(+5)">+5</button>
  <button v-on:click="addMoose(-1)">-1</button>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      count: 0
    };
  },
  methods: {
    addMoose(number) {
      this.count = this.count + number;
    }
  }
});
app.mount('#app');
<\/script>

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

آرگومان + شیء event با $event

هم رویداد را بده، هم مقدار اضافه. از $event استفاده کن.

<div id="app">
  <img
    src="img_tiger.jpg"
    id="tiger"
    v-on:click="myMethod($event, 'Hello')">
  <p>{{ msgAndId }}</p>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      msgAndId: ''
    };
  },
  methods: {
    myMethod(e, msg) {
      this.msgAndId = msg + ', ';
      this.msgAndId = this.msgAndId + e.target.id;
    }
  }
});
app.mount('#app');
<\/script>

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

نمونه بزرگ: یک متد برای چند حیوان

با یک متد و $event سه حیوان را با افزایش های مختلف بشمار.

<div id="app">
  <div id="tigers">
    <img src="img_tiger.jpg">
    <button v-on:click="addAnimal($event, 1)">+1</button>
    <button v-on:click="addAnimal($event, 5)">+5</button>
    <button v-on:click="addAnimal($event, -1)">-1</button>
  </div>
  <div id="moose">
    <img src="img_moose.jpg">
    <button v-on:click="addAnimal($event, 1)">+1</button>
    <button v-on:click="addAnimal($event, 5)">+5</button>
    <button v-on:click="addAnimal($event, -1)">-1</button>
  </div>
  <div id="kangaroos">
    <img src="img_kangaroo.jpg">
    <button v-on:click="addAnimal($event, 1)">+1</button>
    <button v-on:click="addAnimal($event, 5)">+5</button>
    <button v-on:click="addAnimal($event, -1)">-1</button>
  </div>
  <ul>
    <li>Tigers: {{ tigers }}</li>
    <li>Moose: {{ moose }}</li>
    <li>Kangaroos: {{ kangaroos }}</li>
  </ul>
</div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
  data() {
    return {
      tigers: 0,
      moose: 0,
      kangaroos: 0
    };
  },
  methods: {
    addAnimal(e, number) {
      if (e.target.parentElement.id === 'tigers') {
        this.tigers = this.tigers + number;
      } else if (e.target.parentElement.id === 'moose') {
        this.moose = this.moose + number;
      } else {
        this.kangaroos = this.kangaroos + number;
      }
    }
  }
});
app.mount('#app');
<\/script>

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

گام های عملی

  1. داده های لازم را در data بساز.
  2. متدها را در methods تعریف کن.
  3. با v-on متد مناسب را فراخوانی کن.

جمع بندی سریع

  • متدهای Vue توابع عضو کامپوننت هستند.
  • با this به داده ها دسترسی بگیر.
  • رویدادها متدها را اجرا می کنند.
  • $event شیء رویداد را منتقل می کند.

برای ادامه یادگیری، متدهای Vue را کنار اصلاح کننده های رویداد تمرین کن.