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

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

v-bind (v-bind)

«اتصال ویژگی با v-bind» یعنی یک صفتِ HTML را به داده وصل کنیم. «داده واکنشی (Reactive Data)» داده ای است که تغییرش، UI را تازه می کند. مثل برچسب نام روی دفتر که هر وقت عوض شود، روی جلد هم عوض می شود.

تعریف و کاربرد v-bind

v-bind یک «دایرکتیو (Directive)» است؛ یعنی دستور کوتاه در قالب. با آن، صفت ها را به داده وصل می کنیم. تغییر داده، صفت را به روز می کند. میان بر آن : است. همچنین .prop برای property و .attr برای attribute کاربرد دارد. گزینه .camel هم نام صفت را camelCase می کند.

مثال: تغییر رنگ پس زمینه با اتصال ویژگی

رنگ پس زمینه یک DIV به داده وصل می شود. سپس با ورودی رنگ، مقدار را عوض می کنیم. مثل تغییر رنگ جلد دفتر با یک ماژیک.

<template>
  <div>
    <h3>Example v-bind Directive</h3>
    <div v-bind:style="{ backgroundColor: colorVal }">DIV element</div>
    <p>Pick a color:</p>
    <input type="color" v-model="colorVal" />
    <pre>colorVal: '{{ colorVal }}'</pre>
  </div>
</template>

<script>
export default {
  data() {
    return {
      colorVal: '#00aaff'
    };
  }
};
<\/script>

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

ارسال prop بولی با v-bind

گاهی باید prop بولی را دقیق بفرستیم. با v-bind تضمین می کنیم مقدارِ واقعیِ بولی برود، نه رشته.

<template>
  <div>
    <button v-on:click="img = !img">Toggle 'img' prop</button>
    {{ img }}
    <info-box 
      turtle-text="Turtles can hold their breath for a long time."
      v-bind:turtle-img="img"
    />
  </div>
</template>

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

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

میان بر : به جای v-bind

برای کدنویسی تمیز، از : استفاده کن. کار همان v-bind: است و کوتاه تر می نویسیم.

<template>
  <div>
    <button v-on:click="img = !img">Toggle 'img' prop</button>
    {{ img }}
    <info-box 
      turtle-text="Turtles can hold their breath for a long time."
      :turtle-img="img"
    />
  </div>
</template>

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

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

تغییر DOM property با .prop

گاهی باید «property» عنصر را عوض کنیم. مانند indeterminate در چک باکس. این جا .prop لازم است.

<template>
  <div>
    <button v-on:click="indetVal = !indetVal">Toggle</button>
    <input type="checkbox" v-bind:indeterminate.prop="indetVal" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      indetVal: false
    };
  }
};
<\/script>

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

میان برِ .prop و v-bind با هم

می توانیم کوتاه تر هم بنویسیم. طبق منبع، v-bind:indeterminate.prop را به صورت کوتاه می آوریم.

<template>
  <div>
    <button v-on:click="indetVal = !indetVal">Toggle</button>
    <input type="checkbox" .indeterminate="indetVal" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      indetVal: false
    };
  }
};
<\/script>

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

گام های عملی

  1. عنصر را انتخاب کن؛ مثلاً DIV یا ورودی.
  2. با v-bind صفت را به داده وصل کن.
  3. داده را در data() تعریف و مقداردهی کن.
  4. در صورت نیاز از .prop یا .attr استفاده کن.

نکته: برای زمانِ بعد رندر از $nextTick() کمک بگیر. همچنین فهرست کامل دایرکتیوها را در دایرکتیوها ببین.

جمع بندی سریع

  • v-bind صفت را به داده وصل می کند.
  • میان بر : کوتاه نویسی راحتی می دهد.
  • .prop برای property های DOM لازم است.
  • تغییر داده، UI را خودکار تازه می کند.