Ich habe zwei Vue-Komponenten. Die parent-component
:Eltern-Kind-Kommunikation in VueJS
Vue.component('parent-component',{
methods: {
test: function(){
alert('Option Selected');
}
},
template: `
<div><slot></slot></div>
`
});
Und die animals
Komponente:
Vue.component('animals',{
data: function(){
return {
selected: ''
}
},
template: `
<select @change="selectionChanged" v-model="selected">
<slot></slot>
</select>
`,
methods: {
selectionChanged: function(){
this.$emit('optionselected', this.selected);
}
}
});
Und hier ist mein HTML:
<div id="app">
<parent-component @optionselected="test()">
<animals>
<option>Aardvark</option>
<option>Bear</option>
<option>Cat</option>
</animals>
</parent-component>
</div>
Ich versuche, die ausgewählte Option aus geordnete Komponente zu erhalten (animals
) zu die Hauptkomponente (parent-component
). Ich emittiere das optionselected
Ereignis vom Kind, aber es sieht so aus, als ob die Elternkomponente nicht auf dieses Ereignis reagiert, ich meine, die Methode test() wird überhaupt nicht aufgerufen. Was mache ich hier falsch?
Hier die ist JSFiddle Demo
Dank. Aber wie bekomme ich die 'this.selected' Eigenschaft, die während der Ereignisemission von' animals' auf 'eldercomponent' übertragen wurde: 'this. $ Emit (' optionselected ', this.selected);' – Eisenheim
@Eisenheim Sie sind vorbei. Du hast einfach nichts damit gemacht. Ich habe die Warnung aktualisiert, um den ausgewählten Wert anzuzeigen. – Bert