Vue路由器保留iframe dom元素(只是隐藏,不要破坏)

时间:2017-12-27 17:56:39

标签: vue.js vuejs2 vue-router

我正在使用vue-router 3.0开发Vue 2.5 SPA。

某些视图包含呈现iframe的子组件。

当我切换到另一条路线并返回到呈现iframe的路线时,相应的iframe 会重新加载,即使之前曾访问过。这种行为是不需要的,因为在这种情况下会导致用户体验不良。当用户返回视图时,iframe状态应保持与之前相同。

我猜重装是由于dom在离开路线时被摧毁造成的。即使是以下结构也不能阻止它:

<keep-alive>
  <router-view></router-view>
</keep-alive>

<keep-alive>似乎保持Vue组件本身,但不是dom表示。

切换路线时保留dom是否有任何方法(或解决方法)?路由器模式允许隐藏而不是交换组件将是完美的。

1 个答案:

答案 0 :(得分:1)

您将需要在iframe上使用v-show。 在途中,您将不指定组件

<template>
    <iframe v-show="$route.path == '/foo'">
</template>

<script>
routes: [
        { path: '/foo'},
        { path: '/bar' }
    ]
</script>

p.s ...我正在寻找一种更优雅的方式...应该是路由器的属性,告诉我们我们要隐藏,而不是破坏/重建