element-admin 菜单栏点击更改icon图片(干货)

由于我们公司项目最近有个需求,项目使用element-admin模板,需要点击更改菜单栏的icon图片。网上找了很久都没有找到解决办法,最后决定在路由中设置两个icon如图:
在这里插入图片描述
然后在SlidebarItem.vue中,根据路由的名称,和当前路由的icon是否和路由中的icon比较,如果相同则显示icon1的图片

在这里插入图片描述
以下是我的源码

<div v-if="!item.hidden">
    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
        <el-menu-item v-if="item.meta.icon1" :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item v-if=" ($route.name ===  item.name&& $route.meta.icon === onlyOneChild.meta.icon) || ($route.name ===  item.name &&$route.meta.icon === (item.meta&&item.meta.icon))"
                :icon="onlyOneChild.meta.icon1||(item.meta.icon1)" :title="$t(onlyOneChild.meta.title)" />
          <item v-else :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="$t(onlyOneChild.meta.title)" />
        </el-menu-item>
        <el-menu-item v-else :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="$t(onlyOneChild.meta.title)" />
        </el-menu-item>
      </app-link>
    </template>
Logo

前往低代码交流专区

更多推荐