Передача данных от дочернего к родителю в Vuejs (это так сложно?)
Невозможно передать данные от дочернего компонента родительскому компоненту с помощью emit
$ передать событие от дочернего к родительскому компоненту Vue 2
Я просмотрел посты выше и документацию Vue. Из того, что я вижу, я все делаю правильно, но он все еще не работает.
Я включил свой код, но боюсь, что не могу воспроизвести его с помощью фрагмента стека. Работающее воспроизведение можно найти здесь в этой кодовой песочнице
Buttons.vue
Я отметил ниже под функцией navigateTo()
, что подтверждает моя консольчто функция в компоненте получает правильное значение, но я не уверен, что это значение правильно отправляется компонентом или принимается родителем.
<template>
<div class="navigation section columns">
<div class="container column has-text-centered" v-for="button in navigation" :key="button.text">
<button class="button is-primary" @click="navigateTo(button)" type="button">{{ button.text }}</button>
</div>
</div>
</template>
<script>
export default {
name: "Buttons",
props: {
text: String,
dest: String
},
computed: {},
methods: {
navigateTo(button) {
// This console log correctly outputs "button dest 2"(or whatever the button value is)
console.log("button dest", button.dest);
this.$emit("navigate", button.dest);
}
},
data() {
return {
navigation: [
{ text: "North", dest: "2" },
{ text: "East", dest: "3" },
{ text: "South", dest: "4" },
{ text: "West", dest: "5" }
]
};
}
};
</script>
App.vue
<template>
<div id="app" class="container">
<scene @navigate="navigateTo"></scene>
<buttons></buttons>
</div>
</template>
<script>
import Scene from "./components/Scene.vue";
import Buttons from "./components/Buttons.vue";
export default {
name: "app",
methods: {
navigateTo(dest) {
console.log('received value', dest);
this.selectedScene = dest;
}
},
components: {
Scene,
Buttons
}
};
</script>
<style scoped>
</style>