2017-01-16 5 views
1

Ich habe angefangen zu spielen mit Vue, aber ein Problem beim Versuch, Daten an eine Komponente mit props übergeben. In dem folgenden Code this.myData (im Hello.vue) ist undefined aus irgendeinem GrundVuejs - Daten von Eltern zu Kind mit Requisiten übergeben

App.vue

<script> 
import Hello from './components/Hello' 

export default { 
    name: 'app', 
    data() { 
    return { 
     myData: 'this is my data' 
    } 
    }, 
    components: { 
    Hello 
    } ... 
</script> 

Hello.vue

<script> 
export default { 
    name: 'hello', 
    props: ['myData'], 
    data() { 
    return { 
     msg: 'Welcome to Your Vue.js App' 
    } 
    } 
    mounted: function() { 
     console.log(this.myData) 
    } 
} ... 
</script> 

Antwort

5

Sie müssen die untergeordnete Komponente in der übergeordneten verwenden wie , so:

// inside app.vue 
<template> 
    <hello :myData='myData'></hello> // I believe this is your objective 
</template> //:myData is binding the property from the components data field, without using it, you will get myData as `string` in the child component. 

<script> 
    export default { 
    name: 'app', 
    data() { 
    return { 
     myData: 'this is my data' 
    } 
    }, 
    components: { 
    Hello 
    } 
</script> 

OP angefordert einen Weg zu p Ass in Requisiten zu einem Kind, ohne das Kind in der Vorlage zu rendern.

So einen Link zu der ich bin Entsendung documentation

Vue.component('hello', { 
    render: function (createElement) { 
    return createElement(
     <tag-names> 
    ) 
    }, 
    props: { 
    myData: parentComponent.myData // you need to give the parent components' data here. 
    } 
}) 
+1

Ja auf diese Weise funktioniert. Also sollten die Daten immer durch die Vorlage gehen? Was passiert, wenn ich nur Daten übergeben möchte, ohne sie tatsächlich zu rendern (zum Beispiel einige Konfigurationseinstellungen)? –

+1

Es gibt Möglichkeiten, um den Datenaustausch zwischen Komponenten zu erreichen, die kein Template-Rendering benötigen, wie zum Beispiel einen 'eventBus' oder einen vuex-Store. Für Ihren Fall scheinen Requisiten der beste Weg zu sein und Sie müssen das Kind rendern Komponente in der Vorlage. Es gibt einen Weg, Ill aktualisieren meine Antwort dafür, aber das ruft die Render-Funktion. Scheint das in Ordnung? –

+0

Danke! Ich habe nichts dagegen, Requisiten zu benutzen. Scheint der richtige Weg, es zu tun. Haben Sie einfach nicht herausgefunden, dass die Daten über die Vorlagen übertragen werden. –

Verwandte Themen