vue实现弹出框内嵌页面展示并添加tab切换展示实时加载
最近做业务的时候,发现产品的原型图上有一个弹出框,上面包含了两个窗口要进行切换。

每个窗口都有分页列表展示、搜索、添加和删除,感觉就是两个完整的页面,如果全写在一个页面会很麻烦,还可能会出现一系列的问题,后期改起来比较麻烦,所以我就准备分开来写这个窗口,先写两个页面,最后看能不能嵌入到弹出框里。
这里插入一下vue的页面跳转方法,点击按钮直接跳转到另一个页面,这样可以先调整单个页面的样式和功能。
<el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
<template slot-scope="scope">
<router-link :to="'/system/dict-data/index/' + scope.row.dictId" class="link-type">
<span>{{ scope.row.dictType }}</span>
</router-link>
</template>
</el-table-column>
参数获取:
created() {
const dictId = this.$route.params && this.$route.params.dictId;
this.getType(dictId);
this.getTypeList();
},
而且这块跳转的页面也是需要配置路由的,要不然页面就会404:
{
path: '/system/dict-data',
component: Layout,
hidden: true,
permissions: ['system:dict:list'],
children: [
{
path: 'index/:dictId(\\d+)',
component: () => import('@/views/system/dict/data'),
name: 'Data',
meta: { title: '字典数据', activeMenu: '/system/dict' }
}
]
},
当两个页面的功能都实现好了之后,开始在主页面添加弹出框,实现内嵌页面。

- 属性变量props: [‘agentId’],该参数用于父子组件传值
- 组件创建即created的时候,赋值请求后台加载数据
在父页面中引入子页面:

添加弹出框,内嵌子页面
<el-dialog :title="filterTitle" :visible.sync="filterDialogVisible" v-if="filterDialogVisible" width="1100px"
append-to-body>
<el-tabs v-model="filterTabValue" type="border-card" :lazy="true" @tab-click="filterTabClick">
<el-tab-pane label="内容1" name="hotel">
<!-- 酒店过滤页面 -->
<HotelFilter :agentId="agentId" v-if="isHotel"></HotelFilter>
</el-tab-pane>
<el-tab-pane label="内容2" name="keyword">
<Keyword :agentId="agentId" v-if="isKeyword"></Keyword>
</el-tab-pane>
</el-tabs>
</el-dialog>
父页面通过弹框并将子页面通过引入组件的方式包裹在弹框内,通过:visible.sync=“filterDialogVisible” v-if="filterDialogVisible"进行弹框的展示以及组件的创建和销毁,并且通过父子组件传参的方式切换数据。注意这里需要使用v-if以便子组件可以在create()中动态展示数据。
同理,tabs切换也是通过v-if来控制动态渲染页面。
//设置页面
filterRuleAdd(row) {
this.agentId = row.agentId;
this.filterDialogVisible = true;
this.filterTitle = "渠道名称:" + row.agentName;
this.filterTabValue = "hotel";
this.isHotel = true;
},
//禁用配置切换
filterTabClick() {
if (this.filterTabValue == "hotel") {
this.isHotel = true;
this.isKeyword = false;
} else if (this.filterTabValue == "keyword") {
this.isKeyword = true;
this.isHotel = false;
}
},
参考文档:https://www.jb51.net/article/267510.htm
总结
到此这篇关于vue实现弹出框内嵌页面展示并添加tab切换展示实时加载的文章就介绍到这了,更多相关vue弹出框添加tab切换实时加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
vue组件vue-treeselect箭头和叉图标变大问题及解决
这篇文章主要介绍了vue组件vue-treeselect箭头和叉图标变大问题及解决方案,具有很好的参考价值,希望对大家有所帮助。2022-07-07
vue2.0结合DataTable插件实现表格动态刷新的方法详解
这篇文章主要介绍了vue2.0结合DataTable插件实现表格动态刷新的方法,结合具体项目实例形式分析了vue2.0结合DataTable插件实现表格动态刷新过程中遇到的问题与相应的解决方法,需要的朋友可以参考下2017-03-03
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
这篇文章主要介绍了详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04
element table数据量太大导致网页卡死崩溃的解决办法
当页面数据过多,前端渲染大量的DOM时,会造成页面卡死问题,下面这篇文章主要给大家介绍了关于element table数据量太大导致网页卡死崩溃的解决办法,需要的朋友可以参考下2023-02-02


最新评论