element-ui 菜单动态查询的怎么默认打开某个菜单?

大致需要是:
从首页跳转到某模块下边时, 跳转到目标页面时。 从左边展示的分类中找到最新分类。 在右边区别展示对应分类的内容

template

左边一个导航, 右边是动态展示区域

<template>
  <el-container class="container">
    <el-aside width="200px">
      <art-nav/>
    </el-aside>
    <el-main>
      <router-view></router-view>
    </el-main>
  </el-container>
</template>

导航加载出来, 通过计算属性 计算出 展厅第一个id, 设置到el-menu 的default-active里没效果

<template>
  <el-menu class="menu" :default-active="activeIndex" mode="vertical"  router active-text-color="#AD9D79">
    <el-menu-item-group>
      <template slot="title">藏品</template>
      <el-menu-item v-for="item in artType" :key="item.id" :index="'/art/list/' + item.id">{{item.name |truncate}}</el-menu-item>
    </el-menu-item-group>
    <el-menu-item-group>
      <template slot="title">展厅</template>
      <el-menu-item v-for="item in hallList" :key="item.id" :index="'/art/hall/' + item.id">{{item.name |truncate}}</el-menu-item>
    </el-menu-item-group>
  </el-menu>
</template>

router

export default [
  {
    path: '/art',
    name: 'art',
    component: layout,
    children: [
      {
        path: 'hall/:id',
        component: HallDetail,
        props: true
      },
      {
        path: 'detial',
        component: detial
      }
    ]
  }
]

这样的要怎么做?

PS: 计算属性计算:
从vuex取结果帕映射到计算属性, 然后再写一个计算属性,排序后拿第一个, 我怀疑default-active只有在组件 created时设置的

阅读 10.5k
3 个回答

最后的解决方案是:

  1. 修改vuex action返回值查询包含data的Promise对象
  2. 给调用查询展厅的dispatch添加then回调
  3. 在回调判断路由path 等于/art时跳转到计算后的展厅连接, 其它path时不处理
  4. 把导航到当前页面的url改为/art

添加个默认路由 且给菜单加exact

default-active=“$router.path”

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题