tabpane1联动html,vue 使用element 菜单与tab页联动(示例代码)

本文介绍了如何使用 Vue.js 开发一个名为 'UcenMenubar' 的组件,实现动态管理菜单,支持单个页面打开(openTab)、多个页面同时打开(openTabMany)以及Tab之间的切换(Tabs)。组件通过监听 Bus 事件来响应页面跳转请求。
摘要由CSDN通过智能技术生成

exportdefault{

name:"UcenMenubar",

props: ["gradfrom", "menus"],

components: { appMenu },

data() {return{

show:false,

TabsValue:"",

value:"",

input:"",

Tabs: []

};

},

created() {

let that= this;

Bus.$on("openNewTab", function(name) {

that.openTab(name);

}),

Bus.$on("NewTab", function(name) {

that.openTab(name);

});

Bus.$on("NewManyTab", function(name) {

that.openTabMany(name);//链接打开多个页面

});

},

beforeDestroy() {

Bus.$off("openNewTab", name);

Bus.$off("NewTab", name);

Bus.$off("NewManyTab", name);

},

methods: {//打开多个页面

openTabMany(name) {for (var m = 0; m < this.menus.length; m++) {for (var n = 0; n < this.menus[m].data.length; n++) {var ser = this.menus[m].data;if (ser[n].name ==name.name) {this.addTabMany(ser[n], name.tabname);

}

}

}

},

addTabMany(menu, tabname) {var exist = false;for (var i = 0; i < this.Tabs.length; i++) {if (tabname == this.Tabs[i].title) {

exist= true;break;

}

}if (exist == true) {this.TabsValue =tabname;return;

}this.Tabs.push({

title: tabname,

name: tabname,

showItem: menu.showItem,

content: menu.component

});this.TabsValue =tabname;

},//跳转页面

openTab(name) {for (var m = 0; m < this.menus.length; m++) {for (var n = 0; n < this.menus[m].data.length; n++) {var ser = this.menus[m].data;if (ser[n].name ==name) {this.addTab(ser[n]);

}

}

}

},//菜单打开页面

addTab(menu) {var exist = false;for (var i = 0; i < this.Tabs.length; i++) {if (menu.name == this.Tabs[i].name) {

exist= true;break;

}

}if (exist == true) {this.TabsValue =menu.name;return;

}this.Tabs.push({

title: menu.name,

name: menu.name,

showItem: menu.showItem,

content: menu.component

});this.TabsValue =menu.name;

},//remove

removeTab(targetName) {

let tabs= this.Tabs;

let activeName= this.TabsValue;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.TabsValue =activeName;this.Tabs = tabs.filter(tab => tab.name !==targetName);

}

}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值