2017-11-12 3 views
0

So habe ich das folgende Beispiel:Vue.js verwenden Slot von Kinder Kinder

Hier ist mein Kind Komponente. Alle anderen der folgenden Komponenten basieren darauf.

<template> 
    <div class="content-box"> 
    <div class="boxtitlecontainer titleColor"> 
     <slot name="title">Title</slot> 
    </div> 
    <div class="insidebox boxColor"> 
     <slot></slot> 
    </div> 
    </div> 
</template> 

Dies ist eines der Kinder.

<template> 
    <div class="example"> 
    <box> 
     <div slot="title"><slot name="title">Title</slot></div> 
     <slot></slot> 
    </box> 
    </div> 
</template> 

Diese Komponente wird direkt in meinem App.vue verwendet. Um <slot> s zu verwenden, ist der einzige Weg, den ich fand, dieser oben.

Meine Frage ist: Gibt es eine elegantere Methode, dies zu tun und div-Boxen nicht unnötig zu stapeln? Ich meine, ich kann es ohne named Slots tun. Ich denke, dass die rekursiv wie content -> slot(1st children) -> slot(2nd children) gezeigt werden kann, aber ich habe keine Ahnung, wie man es mit benannten Slots macht.

Vielen Dank im Voraus für jede Hilfe.

+0

Was ist das Ziel? – pirs

+0

Das Ziel ist bereits durch meine Lösung dort oben erreicht. Die Frage ist, wie kann es eleganter sein. Ziel ist es jedoch, die Box-Komponente wiederzuverwenden. Wenn ich das div entferne, wird nichts oder der Text im Schlitz gezeigt. –

+0

Es ist unklar, Sie würden '' als rekursive Komponente? – pirs

Antwort

0

statt abhängig von Steckplatz für die Weitergabe Ihrer Inhalte, warum nicht stattdessen Requisiten verwenden?

<template> 
    <div class="example"> 
    <box> 
     <div v-text="title">Title</div> 
     <slot></slot> 
    </box> 
    </div> 
</template> 

<script> 
export default { 
    props: ['title'] 
} 
</script> 
+0

Vielen Dank, für die Antwort. Es ist jedoch nicht möglich, andere Markups im Slot zu verwenden. Ich habe einen ähnlichen Ansatz gewählt, aber es geht nicht mit meinen Bedürfnissen. –

+0

Was sind Ihre Bedürfnisse? – Jalasem

+0

check out refs, ich denke das könnte Ihre Bedürfnisse befriedigen – Jalasem