使用el-menu打开新标签页到外部网址

使用element-plus 的菜单组件打开外部网址

1 使用数组动态生成的菜单,外部链接的对象结构如下

  {
   id: 12,
   path: "https://",//要打开的网址
   meta: {
     title: "菜单名称",
     icon: "icon-menu-buy",
     linkIcon:'icon-menu-buy-link'
   },
  }
2 el-menu 添加 router 属性,当是打开外部链接的菜单项时index置空,不然会链接到 localhost:8080/要打开的网址;
  • 在 menu-item 内部使用 a 标签打开链接,添加后发现只有 a 标签部分能够点击,其它地方点击无法打开新网址,所以需要让 a 标签占据整个 menu-item
<el-menu
  router
  :default-active="activeMenu"
  :unique-opened="true"
  :collapse="!isShow"
  id="menu-wrap"
  @select="toPage"
>
 <el-menu-item :index="computedIndex(item.path)" :key="item.path">
   <template #title>
     <a class="link" v-if="targeLink(item.path)" :href="item.path" target="_blank">
       <span style="margin-left:48px">{{ item.meta.title }}</span>
     </a>
     <span v-else>{{ item.meta.title }}</span>
     <span  v-if="targeLink(item.path)" class="icon link"  :class="item.meta.linkIcon"></span>
   </template>
 </el-menu-item>
</el-menu>
  • 使用的样式
a.link {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
3 外部链接不应该被激活
  • 为了防止点击链接后被激活,添加 default-active 属性,子路由同样需要使菜单高亮,在子路由 meta 中添加需要激活的路由地址,children路由如下,当meta含有activeMenu时,返回activeMenu; 否则返回 path
children:[
 	{
    path: "detail",
    name: "Detail",
    meta: {
      activeMenu:'/父级路由'
    },
    component: () =>
      import(),
  },
]
4 解决在子级路由点击外部链接时,参数被清空的问题
  • 在向子级页面传参时使用的 query 传参,修改为 params 传参即可
//path 修改如下
 path: "detail/:参数1/:参数2..../:参数n",
// 传参方式
this.$router.push({
  name: "Detail",
  params: {
    参数1: 参数1,
    参数2: 参数2,
    ....
    参数n: 参数n,
  },
});

//接收参数
this.$route.params.参数1
  • 注:传递的参数不能是空字符串,会被认为没有传递参数,报错。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值