vue 切换iframe_vue tab嵌入iframe切换不刷新,相对完整的方案

本文介绍了如何在Vue项目中实现选项卡(tab)控件嵌入iframe,重点解决切换iframe时不刷新,保持界面状态的问题。通过自定义组件属性iframeComponent避免组件重新渲染,同时在关闭和重新打开tab时正确处理iframe视图,以实现类似keep-alive的效果。
摘要由CSDN通过智能技术生成

说到Vue的简单、便捷、高效,谁用谁喜欢,自然企业应用也来玩一把,三大经典组件:树控件,网格控件,选项卡控件;

本章先说选项卡tab控件的嵌入iframe。

本次主要解决以下问题:

1.tab控件混合vue-component-view与iframe-view;

2.切换tab, iframe-view 保持原界面不刷新,与keep-alive效果等同;

3.关闭tab中的iframe-view后,将重新打开,不作cache;

问题1:

将  与 iframe-view 列表 分开渲染

从 大师兄的案例 中可以学到,tab切换iframe-view不刷新的原理是:渲染iframe列表,并通过匹配当前路由名称 v-show="$route.path === item.path"  控制切换显示

其中一个iframe-view;而router-view列表中,对应的component为空即没有内容显示

P:其中一个 iframe-view

P: 跳转路由App-view

>

问题2:

关键点在于: 不使用默认component 属性,自定义的属性iframeComponent取而代之,手动注入组件,防止挂载组件导致重新渲染刷新;

import Vue from 'vue/dist/vue.js'import App from'./App.vue'import VueRouter from'vue-router';

import F1 from'./components/f1';

import F2 from'./components/f2';

const Index= { template: '

Index
'}

const routes=[

{

path:'/f1',

name:'f1',

iframeComponent: F1

},

{

path:'/f2',

name:'f2',

iframeComponent: F2

},

{

path:'/index',

component: Index,

children: [

{

path:'/f3',

iframe:true}

]

}

]

const router= newVueRouter({

routes//(缩写)相当于 routes: routes

});

Vue.config.productionTip= falseVue.use(VueRouter);newVue({

render: h=>h(App),

router

}).$mount('#app')

问题3:

当你已经将iframe-view达到keep-alive的效果时,已经成功了一半,却不知关闭tab后,iframe-view的真身还存在,只是v-show=false隐藏而已,再次打开时还是上次的样子,此时显示应该是一个新的tab显示。

解决此问题的关键点是:关闭tab时必须将它从iframe-view列表中移除,再次打开将它加入到列表中, computed过滤出iframe

computed: {

hasOpenComponentsArr() {return this.$router.options.routes.filter(item =>item.iframeComponent);

}

},

add / remove 方法可自行补充,此人懒没办法。。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值