2017-06-15 150 views
1

我試圖使用Vue公司的scoped slots爲什麼我的scoped插槽不顯示任何內容?

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> 

然而,槽顯示在頁面上。控制檯沒有錯誤:

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

我在做什麼錯了?

注意:我正在使用Vue 2.3.4

回答

1

您已經翻譯了語法。你需要在子組件定義slot標籤:

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

然後,在父組件,使用template標籤與slot屬性的內容傳遞給使用該插槽:

<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

噢,謝謝......但我希望':class =「'col'+ props.col」'在BGrid組件內。你知道我該怎麼做?就像我的原始代碼一樣。 – alex

+0

在那裏沒有意義,因爲該插槽沒有引用作用域的'props'變量。如果你只是想從父模板添加一個動態類,只需將它添加到元素,如'

This is a column
'[例子小提琴](https://jsfiddle.net/jjpte3tt/1/) – thanksd

+0

我看到謝謝。所以沒有辦法將動態數據添加到組件內的插槽中。 – alex

相關問題