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

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

v-model (v-model)

اینجا «دستور v-model ویو» را ساده می کنیم. «دوبل جهته (Two-way)» یعنی داده و ورودی همزمان هماهنگ شوند. مثل پیام رسان؛ تایپ می کنی و نمایش فوری می بینی. پس با v-model بین فرم و داده پل می زنیم.

تعریف کوتاه و کاربرد

v-model روی ورودی ها یا کامپوننت ها «دوبل جهته» می سازد. تغییر ورودی، داده را عوض می کند. همچنین تغییر داده، ورودی را به روز می کند. روی <input> و <select> و <textarea> کار می کند.

نمونه پایه: اتصال ورودی و داده

این نمونه مقدار inputValue را با یک <input> هماهنگ می کند. مثل دفتر نمره؛ می نویسی و پایین همان را می بینی.

<template>
  <h1>v-model Example</h1>
  <p>Write something, and see the 'inputValue' data property update automatically.</p>
  <input type="text" v-model="inputValue">
  <p>inputValue property: "{{ inputValue }}"</p>
</template>

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

روی کامپوننت ها: props و emits

روی کامپوننت، v-model با props و emits کار می کند. نام پیش فرض prop برابر modelValue است. رویداد پیش فرض هم update:modelValue است.

<template>
  <h2>Example v-model Directive</h2>
  <p>App.vue 'text' property: "{{ text }}"</p>
  <comp-one v-model="text" />
</template>
<script>
export default {
  data() {
    return {
      text: 'Say Cheese';
    };
  }
};
<\/script>

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

<template>
  <div>
    <h3>Component</h3>
    <input
      :value="modelValue"
      @input="$emit('update:modelValue', $event.target.value)"
    />
  </div>
</template>
<script>
export default {
  props: ['modelValue'],
  emits: ['update:modelValue']
};
<\/script>

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

Computed get/set برای کنترل تمیزتر

می توانیم مقدار را با computed بگیریم و بفرستیم. سپس در set مقدار جدید را emit می کنیم.

<template>
  <div>
    <input v-model="inpVal" />
  </div>
</template>
<script>
export default {
  props: ['modelValue'],
  emits: ['update:modelValue'],
  computed: {
    inpVal: {
      get() {
        return this.modelValue;
      },
      set(v) {
        this.$emit('update:modelValue', v);
      }
    }
  }
};
<\/script>

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

تغییر نام prop با v-model:

می توانیم نام های پیش فرض را تغییر دهیم. مثلا v-model:message استفاده کنیم.

<template>
  <comp-one v-model:message="text" />
</template>
<script>
export default {
  data() {
    return {
      text: 'Say Cheese';
    };
  }
};
<\/script>

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

Modiferها: .lazy و .trim

modifier یعنی پسوند رفتاری. .lazy با رویداد change همگام می شود. .trim فاصله ابتدا و پایان را حذف می کند.

<template>
  <input type="text" v-model.lazy="inputValue" />
  <p>inputValue: "{{ inputValue }}"</p>
</template>
<script>
export default {
  data() {
    return {
      inputValue: null;
    };
  }
};
<\/script>

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

<template>
  <p>No '.trim': <input type="text" v-model="inputVal1" /> "{{ inputVal1 }}"</p>
  <p>With '.trim': <input type="text" v-model.trim="inputVal2" /> "{{ inputVal2 }}"</p>
</template>
<script>
export default {
  data() {
    return {
      inputVal1: 'Hello',
      inputVal2: 'Hi'
    };
  }
};
<\/script>

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

گام های عملی

  1. یک ورودی بساز و v-model بده.
  2. در داده، مقدار متناظر را تعریف کن.
  3. برای کامپوننت، modelValue و emit تنظیم کن.
  4. در نیازهای خاص، از .lazy و .trim کمک بگیر.

نکته: برای چند مقدار دوبل جهته، چند v-model: تعریف کن. همچنین برای مباحث نزدیک، سر بزن به v-memo و صفحه رویدادها در v-on. این لینک کلیدی ماست: دستور v-model ویو.

جمع بندی سریع

  • v-model پل دوبل جهته است.
  • روی ورودی و کامپوننت کار می کند.
  • پیش فرض ها: modelValue و update:modelValue.
  • .lazy و .trim رفتار را اصلاح می کنند.
  • می توان نام prop را تغییر داد.