Element-ui实现多标签页

发布时间:2024-04-08 12:28:50 浏览量:227次

实现类似于浏览器打开多个网页的效果,可同时查看网站的多个页面。

1.添加tabs标签页

其中<p v-html=item.content></p>是为了防止Html转义,使其能够在页签中显示网页而不是字符串。

<el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab">
  <el-tab-pane
          v-for="(item, index) in editableTabs"
          :key="item.name"
          :label="item.title"
          :name="item.name"
  >
    <p v-html=item.content></p>



  </el-tab-pane>
</el-tabs>

2.data中添加默认页面,这样不至于打开网站之后是空白。

editableTabsValue: '1',

editableTabs: [
  {
  title: '员工管理',
  name: '1',
  content: "<iframe ref='1' width='100%' height='850px' src='page/member/list.html'></iframe>"
  }

],
tabIndex: 1

3.methods中添加js脚本,用来关闭和添加页签

关闭页签

removeTab(targetName) {
  let tabs = this.editableTabs;
  let activeName = this.editableTabsValue;
  if (activeName === targetName) {
    tabs.forEach((tab, index) => {
      if (tab.name === targetName) {
        let nextTab = tabs[index + 1] || tabs[index - 1];
        if (nextTab) {
          activeName = nextTab.name;
        }
      }
    });
  }

  this.editableTabsValue = activeName;
  this.editableTabs = tabs.filter(tab => tab.name !== targetName);
}

导航中的单击事件中添加页签,如果已添加则无需添加直接打开

//动态添加标签页
//首先判断是否已经打开
let tabs = this.editableTabs;
let findActive = 0
tabs.forEach((tab, index) => {
  if (tab.name == item.id) {
    this.editableTabsValue = item.id
    findActive = 1
  }
});
if (findActive == 0)
{
  this.editableTabs.push({
    title: item.name,
    name: item.id,
    content: "<iframe ref=" + item.id + " width='100%' height='850px' " + " src=" + item.url + "></iframe>"
  });
  this.editableTabsValue = item.id;
}
//////

导航的html如下

<el-scrollbar wrap-class="scrollbar-wrapper">
  <el-menu
          :default-active="defAct"
          :unique-opened="false"
          :collapse-transition="false"
          background-color="#343744"
          text-color="#bfcbd9"
          active-text-color="#f4f4f5"
  >
    <div v-for="item in menuList" :key="item.id">
      <el-submenu :index="item.id" v-if="item.children && item.children.length>0">
        <template slot="title">
          <i class="iconfont" :class="item.icon"></i>
          <span slot="title">{{item.name}}</span>
        </template>
        <el-menu-item
                v-for="sub in item.children"
                :index="sub.id"
                :key="sub.id"
                @click="menuHandle(sub,false)"
        >
          <i class="iconfont" :class="sub.icon"></i>
          <span slot="title">{{sub.name}}</span>
        </el-menu-item
        >
      </el-submenu>
      <el-menu-item v-else :index="item.id" @click="menuHandle(item,false)">
        <i class="iconfont" :class="item.icon"></i>
        <span slot="title">{{item.name}}</span>
      </el-menu-item>


    </div>
  </el-menu>
</el-scrollbar>

热门课程推荐

热门资讯

请绑定手机号

x

同学您好!

您已成功报名0元试学活动,老师会在第一时间与您取得联系,请保持电话畅通!
确定