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

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

v-else-if (v-else-if)

«v-else-if» یعنی «حالت دوم شرط». «دایرکتیو (Directive)» دستور قالب است. این دستور فقط بعد از «v-if» یا یک «v-else-if» دیگر می آید. سپس، بر اساس شرط، عنصر را می سازد یا حذف می کند. مثل کاربرگ نمره: عالی، خوب، یا ضعیف.

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

اول «v-if» می آید. سپس می توانی چند «v-else-if» بزنی. در پایان، اگر خواستی «v-else» بگذار. هر بخش فقط وقتی اجرا می شود که قبلی ها درست نباشند.

نکته: «v-else-if» باید بلافاصله بعد از «v-if» یا «v-else-if» قبلی بیاید. بینشان تگ دیگری نگذار.

مثال پایه: انتخاب متن و تصویر بر اساس کلمه

<template>
  <div v-if="word === 'apple'">
    <img src="/img_apple.svg" alt="apple">
    <p>The value of the 'word' property is 'apple'.</p>
  </div>
  <div v-else-if="word === 'pizza'">
    <img src="/img_pizza.svg" alt="pizza">
    <p>The value of the 'word' property is 'pizza'</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      word: 'pizza'
    };
  }
};
<\/script>

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

زنجیره حالت ها با مقدار عددی

مثل انبار فروشگاه فکر کن. اگر زیاد بود «In stock». اگر کم بود «Very few left!». وگرنه «Not in stock».

<template>
  <p v-if="typewriterCount > 3">In stock</p>
  <p v-else-if="typewriterCount > 0">Very few left!</p>
  <p v-else>Not in stock</p>
</template>

<script>
export default {
  data() {
    return {
      typewriterCount: 2
    };
  }
};
<\/script>

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

استفاده از متدهای JS در شرط

می توانی از includes استفاده کنی. اگر «pizza» نبود، سراغ «burrito» برو. در نهایت حالت پیش فرض را نشان بده.

<template>
  <div id="app">
    <div v-if="text.includes('pizza')">
      <p>The text includes the word 'pizza'</p>
      <img src="img_pizza.svg" alt="pizza">
    </div>
    <div v-else-if="text.includes('burrito')">
      <p>The text includes the word 'burrito', but not 'pizza'</p>
      <img src="img_burrito.svg" alt="burrito">
    </div>
    <p v-else>The words 'pizza' or 'burrito' are not found in the text</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      text: 'I like taco, pizza, Thai beef salad, pho soup and tagine.'
    };
  }
};
<\/script>

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

همراهی با Transition برای تعویض نرم

با «<Transition>» می توانی جابه جایی بین تصاویر را نرم کنی. حالت ها با «v-else-if» می چرخند.

<template>
  <h1>mode="out-in"</h1>
  <p>Click the button to get a new image.</p>
  <button @click="indexNbr++">Next image</button>
  <Transition mode="out-in">
    <img src="/img_pizza.svg" v-if="imgActive === 'pizza'">
    <img src="/img_apple.svg" v-else-if="imgActive === 'apple'">
    <img src="/img_cake.svg" v-else-if="imgActive === 'cake'">
    <img src="/img_fish.svg" v-else-if="imgActive === 'fish'">
    <img src="/img_rice.svg" v-else-if="imgActive === 'rice'">
  </Transition>
</template>

<script>
export default {
  data() {
    return {
      imgs: ['pizza', 'apple', 'cake', 'fish', 'rice'],
      indexNbr: 0
    };
  },
  computed: {
    imgActive() {
      if (this.indexNbr >= this.imgs.length) {
        this.indexNbr = 0;
      }
      return this.imgs[this.indexNbr];
    }
  }
};
<\/script>

<style scoped>
.v-enter-active {
  animation: swirlAdded 0.7s;
}
.v-leave-active {
  animation: swirlAdded 0.7s reverse;
}
@keyframes swirlAdded {
  from {
    opacity: 0;
    rotate: 0;
    scale: 0.1;
  }
  to {
    opacity: 1;
    rotate: 360deg;
    scale: 1;
  }
}
img {
  width: 100px;
  margin: 20px;
}
img:hover {
  cursor: pointer;
}
</style>

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

گام های عملی

  1. شرط اول را با «v-if» تعریف کن.
  2. حالت های بعدی را با «v-else-if» اضافه کن.
  3. در پایان، «v-else» را برای حالت پیش فرض بگذار.

هشدار: «v-if» و «v-for» را روی یک تگ قاطی نکن. اولویت ها مشکل می سازند.

برای یادگیری بیشتر: v-if، v-else، و انیمیشن ها. همچنین خود دایرکتیو v-else-if را مرجع کن.

جمع بندی سریع

  • «v-else-if» فقط بعد از «v-if» می آید.
  • هر شاخه فقط یک بار ارزیابی می شود.
  • در پایان، «v-else» حالت پیش فرض است.
  • برای جلوه بهتر، از «Transition» کمک بگیر.