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

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

فرم ها (Forms)

فرم (Form) یعنی جعبه ورودی ها. با Vue، فرم ها راحت تر و جذاب تر می شوند. چون با «مدل دوطرفه (Two-way Binding)» و دستور v-model ورودی و داده همیشه هماهنگ می مانند.

فرم ساده HTML

اول فرم خام را بساز. سپس Vue را اضافه کن.

<form>
  <p>Add item<\/p>
  <p>Item name: <input type="text" required><\/p>
  <p>How many: <input type="number"><\/p>
  <button type="submit">Add item<\/button>
<\/form>

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

اتصال ورودی ها با v-model

v-model یعنی اتصال دوطرفه. تغییر ورودی، داده را عوض می کند؛ برعکس هم درست است.

<div id="app">
  <form>
    <p>Add item<\/p>
    <p>Item name: <input type="text" required v-model="itemName"><\/p>
    <p>How many: <input type="number" v-model="itemNumber"><\/p>
    <button type="submit">Add item<\/button>
  <\/form>
<\/div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"><\/script>
<script>
const app = Vue.createApp({
  data() {
    return {
      itemName: null,
      itemNumber: null,
      shoppingList: [
        { name: 'Tomatoes', number: 5 }
      ]
    };
  }
});
app.mount('#app');
<\/script>

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

جلوگیری از رفرش با submit.prevent

فرم ها معمولا صفحه را رفرش می کنند. با .prevent جلوی رفرش را بگیر.

<form v-on:submit.prevent="addItem"><\/form>

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

نوشتن متد افزودن آیتم

یک متد ساده بنویس. شیء بساز. در لیست قرار بده. فرم را پاک کن.

methods: {
  addItem() {
    const item = {
      name: this.itemName,
      number: this.itemNumber
    };
    this.shoppingList.push(item);
    this.itemName = null;
    this.itemNumber = null;
  }
}

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

نمایش لیست با v-for

لیست خرید را خودکار رندر کن. هر تغییر، فوری دیده می شود.

<p>Shopping list:<\/p>
<ul>
  <li v-for="item in shoppingList">{{ item.name }}, {{ item.number }}<\/li>
<\/ul>

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

نمونه کامل

این فرم، آیتم ها را اضافه می کند و لیست را نشان می دهد.

<div id="app">
  <form v-on:submit.prevent="addItem">
    <p>Add item<\/p>
    <p>Item name: <input type="text" required v-model="itemName"><\/p>
    <p>How many: <input type="number" v-model="itemNumber"><\/p>
    <button type="submit">Add item<\/button>
  <\/form>
  <p>Shopping list:<\/p>
  <ul>
    <li v-for="item in shoppingList">{{ item.name }}, {{ item.number }}<\/li>
  <\/ul>
<\/div>

<script src="https://unpkg.com/vue@3/dist/vue.global.js"><\/script>
<script>
const app = Vue.createApp({
  data() {
    return {
      itemName: null,
      itemNumber: null,
      shoppingList: [
        { name: 'Tomatoes', number: 5 }
      ]
    };
  },
  methods: {
    addItem() {
      const item = {
        name: this.itemName,
        number: this.itemNumber
      };
      this.shoppingList.push(item);
      this.itemName = null;
      this.itemNumber = null;
    }
  }
});
app.mount('#app');
<\/script>

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

گام های عملی

  1. فرم خام را بساز و ورودی ها را بچین.
  2. v-model را روی همه ورودی ها بگذار.
  3. submit.prevent را اضافه کن و متد را بنویس.

جمع بندی سریع

  • v-model اتصال دوطرفه می دهد.
  • submit.prevent رفرش را می گیرد.
  • v-for لیست را زنده نشان می دهد.
  • متد تمیز، فرم تمیز می سازد.

ادامه مسیر: صفحه v-model و تغییردهنده های رویداد را ببین. عبارت «فرم های Vue» را در یک پروژه تمرینی استفاده کن.