openTab
在日常使用中,难免会出现自定义页面的情况,这时候我们就可以利用simpleui
内置的一个全局函数app.openTab
来打开页面。
例子
app.openTab({
url: "https://www.baidu.com"
icon: 'far fa-edit',
name:"百度一下你就知道",
breadcrumbs: [{
name:"首页",
icon: 'far fa-edit'
},{
name:"百度",
icon: 'far fa-edit'
}]]
})
函数定义
该函数定义在
simpleui
的路径simpleui/static/admin/simpleui-x/js/index.js
,点击这里查看
openTab: function (data, index, selected, loading) {
if (data.breadcrumbs) {
this.breadcrumbs = data.breadcrumbs;
}
//如果data没有eid,就直接打开或者添加,根据url
if (!data.eid) {
data.eid = new Date().getTime() + "" + Math.random();
}
if (index) {
this.menuActive = String(index);
}
if (selected) {
//找到name,打开
// console.log(data)
for (var i = 0; i < this.tabs.length; i++) {
if (this.tabs[i].url == data.url) {
this.tabModel = this.tabs[i].id;
break;
}
}
return;
}
this.breadcrumbs = data.breadcrumbs;
var exists = null;
//判断是否存在,存在就直接打开
for (var i = 0; i < this.tabs.length; i++) {
var tab = this.tabs[i];
if (tab.eid == data.eid) {
exists = tab;
continue;
}
}
if (exists) {
this.tabModel = exists.id;
} else {
//其他的网址loading会一直转
if (data.url && data.url.indexOf('http') != 0) {
if (loading) {
data.loading = true;
this.loading = true;
} else {
data.loading = false;
this.loading = false;
}
}
// data.id = new Date().getTime() + "" + Math.random();
data.id = data.eid;
data.index = index;
this.tabs.push(data);
this.tabModel = data.id;
}
changeUrl(data)
this.syncTabs();
}
入参详解
该方法有4个入参,一般的需求只需要传入第一个参数即可,参数类型为
json
对象,下列例子只介绍第一个参数。
参数名类型 | 描述 | |
---|---|---|
url | string | 要打开的url路径,可以是项目中的相对路径,也可以是带http(s)开头的绝对路径 |
icon | string | 图标,参考elementui和fontawesome的class |
name | string | 标签栏显示的标题 |
breadcrumbs | array | 面包屑,参考下面breadcrumbs 详解 |
breadcrumbs 详解
面包屑,这个是显示在顶部的路径导航
例子
breadcrumbs: [{
name:"首页",
icon: 'far fa-edit'
},{
name:"百度",
icon: 'far fa-edit'
}]]
breadcrumbs 参数
参数名类型 | 描述 | |
---|---|---|
name | string | 名称 |
icon | string | 图标,参考elementui和fontawesome的class |
常见问题
- 404
这种情况一般是路径配置错误,检查路径是否正确
- 无法打开网页
这种情况一般是目标网站宕机或者是跨域问题被浏览器阻止了,解决方法是目标网页添加响应头,允许跨域即可。
- 其他问题
其他问题可以加入simpleui
的QQ群求助。如果QQ群无法解决可以加作者QQ:599194993(注:所有问题200RMB起,一次)