首页 > 其他分享 >Vue3 实现点击菜单实现切换主界面组件

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

时间:2023-07-12 17:33:20浏览次数:44  
标签:菜单 name ExtTelStatusComponent MenuComponent menuOnClick 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 从而改变组件

 

标签:菜单,name,ExtTelStatusComponent,MenuComponent,menuOnClick,Vue3,组件
From: https://www.cnblogs.com/hailexuexi/p/17548306.html

相关文章

  • PostgreSQL(pg) /MYSQL数据库,使用递归查询(WITH RECURSIVE)功能来实现获取指定菜单ID的
      PostgreSQL/MYSQL数据库,使用递归查询(WITHRECURSIVE)功能来实现获取指定菜单ID的所有下级菜单数据。下方用例是假设菜单表menu的改成自己的表即可WITHRECURSIVEmenu_hierarchyAS(SELECTid,name,parent_idFROMmenuWHEREid=<指......
  • v3.3+使用 defineOptions 定义组件命名、版本、注册子组件
    在v3.3+版本中,可以使用defineOptions方法,定义组件命名、版本、注册子组件<scriptlang="ts"setup>import{Tabs,TabPane}from'ant-design-vue';import{ref}from'vue';import{achieveList}from'./data';importTabPackage......
  • Vue3+.net6.0 六 条件渲染
    v-if,v-else-if,v-else控制元素是否渲染,不满足条件的时候不会有相应元素。<divv-if="type==='A'">A</div><divv-else-if="type==='B'">B</div><divv-else-if="type==='C'">C&l......
  • vue3自定义指令 拖拽 与拖拽变大小
    directives:{drag:{mounted:(el,binding)=>{constdragDom=el;conststy=dragDom.currentStyle||window.getComputedStyle(dragDom,null);el.parentElement.style.cursor='move';......
  • Vue3+.net6.0 五 类和样式绑定
    Vue3关于样式的处理跟Vue2是一样的,常用的有以下几种。1.绑定属性html部分:<div:class="{active:isActive}"></div>js部分:data(){return{isActive:true}}当isActive值为true时,div应用这个active样式,反之亦然。 2.对象方式绑定<div:class="cla......
  • 19:vue3 依赖注入
    1、通过Prop逐级透传问题(传统老的方法只能逐级传递) 传统方式代码如下:App.vue1<template>2<h3>祖宗</h3>3<Parent:msg="msg"></Parent>4</template>56<script>7importParentfrom"./components/Parent.vue"......
  • 2023-07-12 vue this.$set设置子组件内的值无效(uniapp+vue)
    前言:怎么说呢,子组件内嵌套了多层对象和数组,业务逻辑也是在子组件内处理,如何修改多层嵌套的对象数组的值?vue提供了一个this.$set方法去改变对应的值,实测在uniapp打包的微信小程序中无法使用该方法,而在Android端则可以,那有没有两全其美的方法?答案是有,在修改深层次的值时可以通过先......
  • 一个高性能、低内存文件上传流.Net组件
    推荐一个用于轻松实现文件上传功能的组件。项目简介一个基于.NET平台的开源项目,提供了一个简单易用的API,可以在Web应用程序中快速集成文件上传功能。优化多部分流式文件上传性能:减少25%的CPU使用量、50%内存。项目特点1、简单易用的API: 提供了简单的API,可以轻松地集成......
  • Suspense异步引入组件
    等待异步组件时渲染一些额外内容,让应用有更好的用户体验使用步骤:异步引入组件import{defineAsyncComponent}from'vue'constChild=defineAsyncComponent(()=>import('./components/Child.vue'))使用Suspense包裹组件,并配置好default与fallback<tem......
  • python tk增加菜单项的便捷封装
    TK增加菜单项的编码是比较复杂的,为方便使用,我做了一下封装,用户使用场景:root=tk.Tk()AddMenuItem(root,'File.New.Close',lambda:print('111'))AddMenuItem(root,'File.Hzq',lambda:print('abc'))root.mainloop()实现源码:'''Tk扩展'�......