Heim Web-Frontend View.js So verwenden Sie den VueJS-Slot

So verwenden Sie den VueJS-Slot

Sep 24, 2021 pm 02:34 PM
vue.js

So verwenden Sie den VueJS-Slot: 1. Fügen Sie etwas DOM in die Unterkomponente ein oder verbergen Sie das DOM über den Slot, Code wie „new Vue({el: „#app“,data: {},components :{ Kinder:{...}}})".

So verwenden Sie den VueJS-Slot

Die Betriebsumgebung dieses Artikels: Windows 7-System, Vue-Version 2.9.6, DELL G3-Computer.

Verwendung von Slots in VueJS

Übersicht:

Wenn die übergeordnete Komponente DOM in die untergeordnete Komponente einfügen muss, ist die Slot-Verteilung dafür verantwortlich, ob diese DOM angezeigt oder ausgeblendet werden, wo sie angezeigt werden. und wie sie angezeigt werden.

Verteilt in den folgenden Situationen:


<p>
    <children>
      <span>我是slot内容</span>   <!--这行不会显示-->
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          
        template: "<button>为了明确作用范围,所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren

Das Anzeigeergebnis ist: Der Inhalt im Span-Tag wird nicht angezeigt.

Einzelplatz:


<p>
    <children>
      <span>我是slot内容</span>
      <!--这行不会显示-->
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          
        template: "<button><slot>为了明确作用范围,所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren


即父组件放在子组件里的内容,插到了子组件<slot></slot>位置;
注意:即使有多个标签,会一起被插入,相当于在父组件放在子组件里的标签,替换了<slot></slot>这个标签。
例如:<p>
    <children>
      <span>我是slot内容</span>
      <p>测试测试</p>
      <em>我是测试的</em>
      <!--这行不会显示-->
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {

      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<button><slot>为了明确作用范围,所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

D:具名slot:将放在子组件里的不同html标签放到不同位置,父组件在要发布的标签里添加slot=”name名”属性,子组件在对应分发的位置的slot标签里,添加name=”name名”属性,然后就会将对应的标签放在对应位置了。
例如:<p>
    <children>
      <span>12345</span>
      <span>56789</span>
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<button><slot name=&#39;first&#39;>为了明确作用范围<slot name=&#39;third&#39;>所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

E:分发内容的作用域:
被分发的内容的作用域,根据其所在模块决定,例如:<p>
    <children>
      <span>12345</span>
      <span>56789</span>
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<button><slot name=&#39;first&#39;>为了明确作用范围<slot name=&#39;third&#39;>所以使用button标签"
        }
      },
      methods: {
        test: function() {
          console.log("我是first点击打印的内容");
        }
      }
    })  </script>点击按钮12345的区域时(而不是全部按钮),会触发父组件的test方法,然后打印“我是first点击打印的内容”。但是点击其他区域则没有影响。
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

F:当没有分发内容时的提示:假如父组件没有在子组件中放置有标签,或者是父组件在子组件中放置标签,但有slot属性,而子组件中没有slot属性的标签。那么子组件的slot标签,将不会起任何作用。除非,该slot标签内有内容,那么在无分发内容的时候,会显示该slot标签内的内容。
例如:<p>
    <children>
      <span>【12345】</span>
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<p><slot name=&#39;first&#39;><button>【没内容显示1】为了明确作用范围,<slot name=&#39;last&#39;><button>【没内容显示2】所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

如果改为:<p>
    <children>
      <span>【12345】</span>
    </children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<p><slot name=&#39;first&#39;><button>【没内容显示1】为了明确作用范围,<slot name=&#39;last&#39;><button>【没内容显示2】所以使用button标签"
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

说明:a、name=”first”的slot标签被父组件对应的标签所替换(slot标签内部的内容被舍弃)
b、name=”last”的slot标签,因为没有对应内容,则显示该slot标签内部的内容。

G、假如想控制子组件根标签的属性【1】首先,由于模板标签是属于父组件的,因此,将子组件的指令绑定在模板标签里,是不可以的(因为其归属于父组件)
【2】假如需要通过父组件控制子组件是否显示(例如v-show或v-if),那么这个指令显然是属于父组件的,可以将标签写在子组件的模板上。例如:<p>
    <button>点击让子组件显示</button>
    <children></children>
  </p>
  <script>
    new Vue({
      el: "#app",
      data: {
        abc: false
      },
      methods: {
        toshow: function() {          this.abc = !this.abc;
        }
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<p>这里是子组件"
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

点击之后:
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

说明:通过父组件(点击按钮,切换v-if指令的值)控制子组件是否显示。
【3】假如需要通过子组件,控制子组件是否显示(比如隐藏)那么这个指令显然是属于子组件的(会将值放在子组件的data属性下)那么就必须放置在子组件的根标签中。
例如:<p>
    <button>点击让子组件显示</button>
    <children>
      <span>【12345】</span>
      <!--上面这行不会显示-->
    </children>
  </p>

  <script>
    new Vue({
      el: "#app",
      methods: {
        toshow: function() {          this.$children[0].tohidden = true;
        }
      },
      components: {
        children: { //这个无返回值,不会继续派发          template: "<p v-if=&#39;tohidden&#39; @click=&#39;tohide&#39;>这里是子组件",
          data: function() {            return {
              tohidden: true
            }
          },
          methods: {
            tohide: function() {              this.tohidden = !this.tohidden;
            }
          }
        }
      }
    })  </script>
Nach dem Login kopieren

So verwenden Sie den VueJS-Slot

Nach dem Klicken auf „Hier ist die untergeordnete Komponente“:

So verwenden Sie den VueJS-Slot

Klicken Sie auf „Klicken Sie, um die untergeordnete Komponente anzuzeigen“:
Anleitung:

So verwenden Sie den VueJS-SlotDurch Klicken auf die untergeordnete Komponente wird die untergeordnete Komponente ausgeblendet
Klicken Sie auf die Schaltfläche der übergeordneten Komponente. Lassen Sie die Unterkomponente erneut anzeigen, indem Sie das tohidden-Attribut der Unterkomponente ändern.
Die Anweisungen der Unterkomponente sind an die Vorlage der Unterkomponente gebunden (damit sie aufgerufen werden können).

Empfohlenes Lernen: „vue-Tutorial

Das obige ist der detaillierte Inhalt vonSo verwenden Sie den VueJS-Slot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ausführliche Diskussion darüber, wie Vite .env-Dateien analysiert Ausführliche Diskussion darüber, wie Vite .env-Dateien analysiert Jan 24, 2023 am 05:30 AM

Wenn wir das Vue-Framework zum Entwickeln von Front-End-Projekten verwenden, stellen wir bei der Bereitstellung mehrere Umgebungen bereit. Oft sind die von Entwicklungs-, Test- und Online-Umgebungen aufgerufenen Schnittstellendomänen unterschiedlich. Wie können wir die Unterscheidung treffen? Dabei werden Umgebungsvariablen und Muster verwendet.

Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt Detaillierte grafische Erklärung zur Integration des Ace-Code-Editors in ein Vue-Projekt Apr 24, 2023 am 10:52 AM

Ace ist ein in JavaScript geschriebener einbettbarer Code-Editor. Es entspricht der Funktionalität und Leistung nativer Editoren wie Sublime, Vim und TextMate. Es kann problemlos in jede Webseite und JavaScript-Anwendung eingebettet werden. Ace wird als Haupteditor für die Cloud9-IDE gepflegt und ist der Nachfolger des Mozilla Skywriter (Bespin)-Projekts.

Was ist der Unterschied zwischen Komponentisierung und Modularisierung in Vue? Was ist der Unterschied zwischen Komponentisierung und Modularisierung in Vue? Dec 15, 2022 pm 12:54 PM

Der Unterschied zwischen Komponentisierung und Modularisierung: Die Modularisierung ist aus Sicht der Codelogik unterteilt. Sie erleichtert die Entwicklung auf Codeebene und stellt sicher, dass die Funktionen jedes Funktionsmoduls konsistent sind. Die Komponentisierung ist die Planung aus der Perspektive der UI-Schnittstelle; die Komponentisierung des Frontends erleichtert die Wiederverwendung von UI-Komponenten.

Praktischer Kampf: Entwickeln Sie ein Plug-In in vscode, das Vue-Dateien unterstützt, um zu Definitionen zu springen Praktischer Kampf: Entwickeln Sie ein Plug-In in vscode, das Vue-Dateien unterstützt, um zu Definitionen zu springen Nov 16, 2022 pm 08:43 PM

vscode selbst unterstützt Vue-Dateikomponenten, um zu Definitionen zu springen, aber die Unterstützung ist sehr schwach. Unter der Konfiguration von vue-cli können wir viele flexible Verwendungen schreiben, die unsere Produktionseffizienz verbessern können. Es sind jedoch diese flexiblen Schreibmethoden, die verhindern, dass die von vscode selbst bereitgestellten Funktionen das Springen zu Dateidefinitionen unterstützen. Um mit diesen flexiblen Schreibmethoden kompatibel zu sein und die Arbeitseffizienz zu verbessern, habe ich ein vscode-Plug-in geschrieben, das Vue-Dateien unterstützt, um zu Definitionen zu springen.

Lassen Sie uns ausführlich über reactive() in vue3 sprechen Lassen Sie uns ausführlich über reactive() in vue3 sprechen Jan 06, 2023 pm 09:21 PM

Vorwort: Bei der Entwicklung von vue3 bietet reactive eine Methode zur Implementierung reaktionsfähiger Daten. Dies ist eine häufig verwendete API in der täglichen Entwicklung. In diesem Artikel wird der Autor seinen internen Betriebsmechanismus untersuchen.

Erfahren Sie, wie Sie Unit-Tests in Vue3 schreiben Erfahren Sie, wie Sie Unit-Tests in Vue3 schreiben Apr 25, 2023 pm 07:41 PM

Vue.js ist heute ein sehr beliebtes Framework in der Front-End-Entwicklung. Da sich Vue.js ständig weiterentwickelt, werden Unit-Tests immer wichtiger. Heute untersuchen wir, wie man Unit-Tests in Vue.js 3 schreibt, und stellen einige Best Practices sowie häufige Probleme und Lösungen vor.

Ein einfacher Vergleich der JSX-Syntax und der Template-Syntax in Vue (Analyse der Vor- und Nachteile) Ein einfacher Vergleich der JSX-Syntax und der Template-Syntax in Vue (Analyse der Vor- und Nachteile) Mar 23, 2023 pm 07:53 PM

In Vue.js können Entwickler zwei verschiedene Syntaxen zum Erstellen von Benutzeroberflächen verwenden: JSX-Syntax und Vorlagensyntax. Beide Syntaxen haben ihre eigenen Vor- und Nachteile. Lassen Sie uns ihre Unterschiede, Vor- und Nachteile besprechen.

Eine kurze Analyse, wie Vue den Datei-Slicing-Upload implementiert Eine kurze Analyse, wie Vue den Datei-Slicing-Upload implementiert Mar 24, 2023 pm 07:40 PM

Im eigentlichen Entwicklungsprojektprozess ist es manchmal erforderlich, relativ große Dateien hochzuladen, und dann ist der Upload relativ langsam, sodass das Front-End möglicherweise das Hochladen von Dateiabschnitten erfordert. Dies ist beispielsweise sehr einfach Der Gigabyte-Dateistrom wird in mehrere kleine Dateiströme aufgeteilt, und dann wird die Schnittstelle aufgefordert, die jeweiligen kleinen Dateiströme zu liefern.

See all articles