2017-09-12 1 views
0

Wie bekomme ich diese 2 Komponenten zusammen zu arbeiten?Vuejs Slot Eltern Kind

Vue.component('parent', { 
    template: ''+ 
     '<slot name="foo"></slot>'+ 
    '' 
}); 

Vue.component('child', { 
    template: ''+ 
     '<div slot="foo">bar</div>'+ 
    '' 
}); 

Ich dachte, ich so etwas tun könnte, aber es schien nicht

Vue.component('parent', { 
    components: [ 
     'child' 
    ], 
    template: ''+ 
     '<slot name="foo"></slot>'+ 
    '' 
}); 

Hier zu arbeiten ist ein JS Fiddle https://jsfiddle.net/3fjmLL52/

+1

Was möchten Sie tun? – Bert

+0

Ich habe eine JS Fiddle hinzugefügt ... sorry, ich bin ziemlich neu zu vue immer noch –

+0

Möchten Sie das Kind innerhalb der Eltern gerendert werden? – Bert

Antwort

1

Wenn Sie das Kind wollen in der zu erbringenden Übergeordnet würde die Vorlage wie folgt aussehen:

<div id="app"> 
    <main> 
     <parent> 
      <child slot="foo"></child> 
     </parent> 
    </main> 
</div> 

Sie können auch die 0 entfernenaus der untergeordneten Vorlage.

Vue.component('child', { 
    template: `<div>bar</div>` 
}); 

Vue.component('parent', { 
 
    template: ` 
 
    <div> 
 
     <slot name="foo">Default</slot> 
 
     <h1><slot name="bar">Header</slot> 
 
    \t </div>` 
 
}); 
 

 
Vue.component('child', { 
 
    template: '' + 
 
     '<div>bar</div>' + 
 
\t '' 
 
}); 
 

 
new Vue({ 
 
    el: '#app' 
 
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js"></script> 
 
<div id="app"> 
 
    <main> 
 
     <parent> 
 
      <child slot="foo"></child> 
 
      <span slot="bar">Header Content</span> 
 
     </parent> 
 
    </main> 
 
</div>

+0

abgeladen werden, aber wenn ich mehrere Schlitze haben, die dann eingestellt werden möchte ich würde halten 'slot =" foo ", oder? –

+0

Ok Ich habe versucht, meine JS Fiddle zu aktualisieren, aber ich muss etwas fehlen https://jsfiddle.net/3fjmLL52/1/ –

+0

Ja mehrere Slots, weil das Kind Inhalte, die –