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

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

$el ($el)

«$el» یعنی عنصر ریشه DOM کامپوننت. «DOM» درخت تگ های صفحه است. مثل دفتر کلاس که فهرست دانش آموزها دارد. اما توجه کن، $el بعد از mount ساخته می شود. یعنی وقتی برنامه سوار شد.

تعریف و نکات کلیدی درباره آبجکت $el

$el نماینده ریشه کامپوننت است. اگر فقط یک ریشه باشد، $el همان تگ است. اما اگر چند ریشه باشد، $el فقط یک «گره متن» داخلی است. بنابراین تغییر مستقیم DOM با $el پیشنهاد نمی شود. بهتر است از «ref» و امکانات Vue استفاده کنیم.

نمونه ساده: تغییر پس زمینه با $el

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

export default {
  methods: {
    changeColor() {
      this.$el.style.backgroundColor = 'lightgreen';
    }
  }
};

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

روش پیشنهادی: استفاده از ref به جای $el

با «ref» هدف را دقیق می گیریم. سپس کد منظم تر می ماند.

<template>
  <div ref="rootDiv">
    <h2>Example $el Object</h2>
    <p>Better use ref instead of $el for style changes.</p>
    <button v-on:click="changeColor">Click here</button>
  </div>
</template>

<script>
export default {
  methods: {
    changeColor() {
      this.$refs.rootDiv.style.backgroundColor = 'lightgreen';
    }
  }
};
<\/script>

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

وقتی چند ریشه داریم

اگر چند عنصر در ریشه باشند، $el یک «متن جایگزین» است. بنابراین دست کاری DOM با $el ممکن نیست. خطا می گیرید.

<template>
  <div>
    <h2>Example $el Object</h2>
    <p>Cannot rely on $el when multiple root nodes exist.</p>
    <button v-on:click="changeColor">Click here</button>
  </div>
  <p>This extra p creates multiple root elements.</p>
</template>

<script>
export default {
  methods: {
    changeColor() {
      this.$el.style.backgroundColor = 'lightgreen';
    }
  }
};
<\/script>

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

پیوندهای داخلی

برای آشنایی با «نمونه کامپوننت» به نمونه کامپوننت برو. برای کار با ارجاع ها، صفحه $refs را ببین.

نکته: در Composition API با <script setup> به $el دسترسی نداریم.

جمع بندی سریع

  • $el ریشه DOM کامپوننت است.
  • بعد از mount در دسترس می شود.
  • برای تغییرات، ref خواناتر است.
  • چند ریشه؟ $el کمک زیادی نمی کند.