Vue 事件触发和监听
一、事件触发($emit)
在需要触发的页面添加触发事件
父组件
this.$root.eventHub.$emit('事件名', 参数);
<script>
changePageMenu(pageMenu, e){
//事件触发也需要一个事件来触发,比如此处是切换标签页时触发
this.$root.eventHub.$emit('changePageMenu1', pageMenu);
},
</script>
二、事件监听($on)
在子组件中添加监听事件
this.$root.eventHub.$on('事件名', (callback)=>{})
子组件
<script>
import PageMenu from "@/components/PageMenu";
import First from "./View/First";
import Second from "./View/Second";
import Third from "./View/ Third";
import Fourth from "./View/Fourth";
export default {
name: "Demosub",
data() {
return {
FirstVisible:true, //默认初始显示第一页面
SecondVisible: false,
ThirdVisible: false,
FourthVisible: false,
}
},
components: {
First,
Second,
Third,
Fourth,
PageMenu,
},
}
</script>
mounted() {
this.$root.eventHub.$on('changePageMenu1', (yourData)=>{
if(yourData == "第一页面")
{
this.FirstVisible = true;
this.SecondVisible = false;
this.ThirdVisible = false;
this.FourthVisible = false;
}
else if(yourData == "第二页面")
{
this.FirstVisible = false;
this.SecondVisible = true;
this.ThirdVisible = false;
this.FourthVisible = false;
} else if(yourData == "第三页面")
{
this.FirstVisible = false;
this.SecondVisible = false;
this.ThirdVisible = true;
this.FourthVisible = false;
} else if(yourData == "第四页面")
{
this.FirstVisible = false;
this.SecondVisible = false;
this.ThirdVisible = false;
this.FourthVisible = true;
}
} )
}
自己初学,仅供参考。