Javascript 在Vuejs中从子级侦听到父级的事件
我想将一个事件从一个子组件发送到其父组件,这将改变视图 我可以创建事件并发出它,但是我的模板似乎没有注册它,我使用的是单文件组件(SFC)。另外,如果我手动更新数据对象,一切都可以正常工作 App.vue(父级)Javascript 在Vuejs中从子级侦听到父级的事件,javascript,vue.js,vuejs2,frontend,Javascript,Vue.js,Vuejs2,Frontend,我想将一个事件从一个子组件发送到其父组件,这将改变视图 我可以创建事件并发出它,但是我的模板似乎没有注册它,我使用的是单文件组件(SFC)。另外,如果我手动更新数据对象,一切都可以正常工作 App.vue(父级) 导出默认值{ 名称:“应用程序”, 数据(){ 返回{ 当前视图:“模态” } }, 方法:{ 更新视图(视图){ console.log('事件侦听器!!!') this.currentView=视图; } } } Modal.vue(子级) {{title}} {{body}
导出默认值{
名称:“应用程序”,
数据(){
返回{
当前视图:“模态”
}
},
方法:{
更新视图(视图){
console.log('事件侦听器!!!')
this.currentView=视图;
}
}
}
Modal.vue(子级)
{{title}}
{{body}}
更多信息
我同意
导出默认值{
名称:'模态',
数据(){
返回{
秀:没错,
标题:“你好”
}
},
方法:{
完全同意{
this.show=false;
}
}
}
请帮助:)您需要在
本身上注册事件侦听器;组件事件不冒泡()
App.vue中是否有可用的组件,即注册为全局组件?否则它必须注册为本地组件在main.JS中,是否有一种方法可以通过JS(方法)本身实现这一点,即创建事件和侦听?如果您有对组件的引用(通过),则可以使用添加侦听器,请参阅。
<template>
<div v-on:change-view="updateView">
<!-- render the currently active component/page here -->
<component v-bind:is="currentView"></component>
</div>
</template>
<script>
export default {
name : 'app',
data () {
return {
currentView : 'Modal'
}
},
methods : {
updateView (view) {
console.log('event listener!!!')
this.currentView = view;
}
}
}
</script>
<template>
<div>
<vk-modal v-bind:show="show">
<h1>{{ title }}</h1>
<p>{{ body }}</p>
<p class="uk-text-right">
<vk-button v-on:click="$emit('change-view', 'Purposes')">More Information</vk-button>
<vk-button v-on:click="fullConsent" type="primary">I Agree</vk-button>
</p>
</vk-modal>
</div>
</template>
<script>
export default {
name : 'modal',
data () {
return {
show : true,
title : 'Hello'
}
},
methods : {
fullConsent () {
this.show = false;
}
}
}
</script>