【发布时间】:2020-05-15 19:20:40
【问题描述】:
我正试图弄清楚如何让子组件与父组件通信,而不需要在它们之间进行硬绑定。
根据我的阅读,应该是自定义事件。但我无法让父组件接收事件并对其采取行动。
在下面的示例中,我希望单击<child> 中的“执行操作”按钮来触发<parent> 中的doStuff()。我看到指示按钮被单击的日志消息,但我没有看到指示发出的消息已被父级接收到的日志消息。
示例 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',
})
【问题讨论】:
-
问题是你在 div 上发出的,而不是任何组件。
标签: vuejs2 vue-component