2017-06-15 7 views
1

Ich versuche scoped slots Vues zu verwenden:Warum zeigt mein Scoped-Slot nichts an?

App.vue:

<template> 
    <div id="app"> 
    <b-grid> 
     <slot name="col" :col="2"> 
     <p>Some test</p> 
     </slot> 
    </b-grid> 
    </div> 
</template> 

BGrid.vue

<template> 
    <div class="b-grid"> 
    <div class="container"> 
     <div class="row"> 
     <template slot="col" scope="props"> 
      <div :class="'col' + props.col">This is a column</div> 
     </template> 
     </div> 
    </div> 
    </div> 
</template> 

jedoch der Schlitz auf der Seite angezeigt wird. Keine Fehler in der Konsole:

<div id="app"> 
    <div class="b-grid"> 
    <div class="container"> 
     <div class="row"></div> 
    </div> 
    </div> 
</div> 

Was mache ich falsch?

Hinweis: Ich bin mit Vue 2.3.4

Antwort

1

Sie haben die Syntax leicht geschlagen bekommen. Sie benötigen einen slot-Tag in der Kind-Komponente zu definieren:

<div class="b-grid"> 
    <div class="container"> 
    <div class="row"> 
     <slot name="col" :col="2"></slot> 
    </div> 
    </div> 
</div> 

Dann in der übergeordneten Komponente, verwenden Sie den template-Tag mit dem slot Attribute in dem Inhalt zu übergeben für diesen Schlitz zu verwenden:

<div id="app"> 
    <b-grid> 
    <template slot="col" scope="props"> 
     <div :class="'col' + props.col">This is a column</div> 
    </template> 
    </b-grid> 
</div> 

Here's a fiddle.

+0

Oh danke ... aber ich wollte das ': class =" 'col' + props.col "' in der BGrid-Komponente sein. Weißt du wie ich das machen kann? Wie in meinem ursprünglichen Code. – alex

+0

Es würde dort keinen Sinn ergeben, weil der Slot keinen Bezug auf die bereichsspezifische 'Requisiten'-Variable hat. Wenn Sie einfach eine dynamische Klasse aus der übergeordneten Vorlage hinzufügen möchten, fügen Sie sie einfach zum Element hinzu, wie '

This is a column
' [Beispielgeige] (https://jsfiddle.net/jjpte3tt/1/) – thanksd

+0

Ich sehe danke. Es gibt also keine Möglichkeit, dynamische Daten zu einem Slot in einer Komponente hinzuzufügen. – alex