Я пытаюсь выяснить, как заставить дочерний компонент взаимодействовать с родительским компонентом без жесткой связи между ними.
Из того, что я прочитал, пользовательские события должны быть предметом , Но я не могу заставить родительский компонент получать и воздействовать на событие.
В моем примере ниже я ожидаю, что нажатие на кнопку «Сделать вещи» в <child>
вызовет doStuff()
в <parent>
, Я вижу сообщение журнала, которое указывает, что кнопка была нажата, но я не вижу сообщения журнала, указывающего, что отправленное сообщение было когда-либо получено родителем.
Пример HTML:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app">
<parent>
<child></child>
</parent>
</div>
</body>
</html>
Образец Javascript:
Vue.component('parent', {
props: [],
template: `
<div v-on:stuff="doStuff">
<h1>Hello World (from parent)!</h1>
<slot></slot>
</div>
`,
methods: {
doStuff: function() {
console.log('Do stuff');
}
}
});
Vue.component('child', {
props: [],
template: `
<div>
Hello World (from child)!<br>
<button v-on:click="performClick">Do stuff</button>
</div>
`,
methods: {
performClick: function() {
console.log('Do something');
this.$emit('stuff');
}
}
});
var app = new Vue({
el: '#app',
})