Vue3 实现点击菜单实现切换主界面组件

子组件

菜单组件 MenuComponent

列表组件 ExtTelListComponent

状态组件 ExtTelStatusComponent

父组件

界面主体 MainIndex

 实现功能:在 MainIndex 中引入 三个子组件  通过点击  菜单组件 切换加载  列表组件 和 状态组件

 实现效果

一、菜单组件 MenuComponent

复制代码
<template>
    <ul class="menuU Huans">
        <li>
            <a href="javascript:;" class="menuUa flexC fl-bet Huans"><p>功能菜单</p><span>[0/5]</span></a>
                <div class="menuUn Huans">
                    <a href="javascript:;" class="menuUna flexC fl-bet Huans"  @click="menuOnClick('ExtTelStatusComponent')"><p>调度专区</p><span>[0/5]</span></a>
                    <a href="javascript:;" class="menuUna flexC fl-bet Huans"  @click="menuOnClick('ExtTelListComponent')"><p>分机列表</p><span>[0/5]</span></a>
               </div>
        </li>
    </ul>
</template>

 
复制代码
复制代码
<script>
 
export default {
  // 组件名称
  name: 'MenuComponent',
  setup (props,{emit}) {
        function menuOnClick(selected_name){
            
            console.log("menuOnClick() "+selected_name);
            //emit('MenuComponent_menuOnClick','ExtTelListComponent' );
            emit('MenuComponent_menuOnClick',selected_name); 
        }
        return {menuOnClick}
  },
 
复制代码

其中  emit('MenuComponent_menuOnClick',selected_name);
MenuComponent_menuOnClick 为 要调用 父组件的 指定事件的名称
selected_name 为 要传给父组件的参数

 

二、父组件 MainIndex

父组件中写这个 menu-component 子组件的地方 加入  @MenuComponent_menuOnClick  事件并指向父组件的 toggleTemplate 函数

菜单组件 

<menu-component @MenuComponent_menuOnClick="toggleTemplate"></menu-component>

动态切换组件

<div class="IndConK Huans overH" >
   <!-- 动态组件 -->
   <component :is="currentTemplate"></component>
</div>
currentTemplate 为 父组件 MainIndex 的变量 用于存 当前组件的名称
复制代码
<script>
    /* 引入 组件 */
    import ExtTelListComponent from '@/components/ExtTelListComponent.vue'
    /* 引入 组件 */
    import ExtTelStatusComponent from '@/components/ExtTelStatusComponent.vue'

  export default {
    name: 'MainIndex',
    components: {
         
        ExtTelListComponent,
        ExtTelStatusComponent,
 
    },
  data() {
    return { 

      currentTemplate: "ExtTelStatusComponent" //当前组件
    };
    },
  mounted() { 
       //页面加载完成后 调用一次 显示默认组件
    this.toggleTemplate('ExtTelStatusComponent'); 

  },
  methods: {

    //切换 组件
    toggleTemplate(activeTemplate) {
      console.log("toggleTemplate() "+activeTemplate);
      this.currentTemplate = activeTemplate;
    },
   }
复制代码
通过 toggleTemplate 这个函数 将组件名称 传入 赋给 变量 currentTemplate 从而改变组件

 

posted @   海乐学习  阅读(1129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示