我是一个初学者,我尝试过vue-emit事件。但该活动没有听取家长的意见。请帮帮我!!
应用程序中的vue
<app-header v-bind:somethings='name' @custom-event-name="setName"></app-header>
setName(childName){
this.name= childName;
}
体内.vue
<button @click="changeName"> click me to change name </button>
changeName: function(){
this.$emit('custom-event-name', 'Some Value'); }
根据我在script
部分中看到的内容,您没有导入Body
组件,这是您试图发出事件的地方。
现在你有这个:
<script>
import Header from './components/Header.vue';
export default {
components:{
'app-header': Header,
'app-body' : Body
},
data () {
return {
name: 'John',
}
},
methods: {
setName(payload) {
this.name = payload;
}
}
}
</script>
Body
组件没有import
语句,所以您的父组件不知道Body
是什么。要解决此问题,您只需要像对Header
所做的那样添加一个导入即可。它可能看起来像这样:import Body from './components/Body.vue';
现在正在使用Body
组件,您需要将其包含在template
中。您将执行与app-header
相同的操作,并包含类似于<app-body></app-body>
的标记。最后,您需要添加事件侦听器,以便父级知道何时运行setName
。这会被添加到app-body
标签中,并且最终看起来像这样:<app-body @custom-event-name="setName"></app-body>