【问题标题】:How to switch vue.js router views without rerendering html如何在不重新渲染 html 的情况下切换 vue.js 路由器视图
【发布时间】:2020-01-16 17:48:19
【问题描述】:

我正在使用 vue 和官方路由器。我的应用程序有一些视图,一个视图有一个带有一些输入的表单。现在我正在寻找一种在不丢失输入数据/重新渲染视图的情况下切换视图的解决方案。表单中没有额外的保存按钮。

可能我的问题与 v-if 和 v-show 的工作方式不同: https://vuejs.org/v2/guide/conditional.html#v-if-vs-v-show

我基于vue路由器示例构建了一个示例: https://jsfiddle.net/okuc64d2/6/

const Foo = { 
	data: function () {
            return {
                text: "abc"
            }
        },
  template: '<div>VIEW A: <input v-model="text" placeholder="edit me"></div>' 
}
const Bar = { 
	data: function () {
            return {
                text: "123"
            }
        },
  template: '<div>VIEW B: <input v-model="text" placeholder="edit me"></div>' 
}

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

const router = new VueRouter({
  routes
})

const app = new Vue({
  router
}).$mount('#app')

// Now the app has started!
.router-link-active {
  color: red;
}
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>

<div id="app">
  <h1>Hello App!</h1>
  <ul>
    <li>Go to  Foo</li>
    <li>Change input</li>
    <li>Go to Bar</li>
    <li>Go back to Foo</li>
    <li>Input is resetted</li>
  </ul>
  
  <p>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <router-view></router-view>
</div>

【问题讨论】:

  • 使用vuex存储数据?提交后清除吗?
  • 不,我目前不使用 vuex。它只是一个小应用程序,但如果这是最好的方法,我明天会看看它。
  • 保活可能会有所帮助:&lt;keep-alive&gt;&lt;router-view&gt;&lt;/router-view&gt;&lt;/keep-alive&gt;
  • Keep alive 在我的第一次测试中完美运行。谢谢!我希望我不必回来;-)

标签: vue.js vue-router


【解决方案1】:

您可以将 keyup 上的输入保存到 vuex 存储并将其用于您的组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2022-08-19
    • 2020-02-04
    • 1970-01-01
    • 2017-12-31
    • 2021-01-18
    相关资源
    最近更新 更多