解决vue多个路由共用一个页面的问题

在日常的vue开发中我们可能会遇见多个路由需要共用一个页面的需求,特别是当路由是通过动态添加的,不同的路由展示的东西只是数据不同其他没有变化。例如:

?


1

2

3

4

5

6

7

8

9

10

11

let routes = [

  {path:"/zhanshan",

  components:Person,

  },

  {path:"/lisi",

  components:Person,

  },

  {path:"/wangwu",

  components:Person,

  }

]

这种情况的时候,我们发现,其实我们的页面在第一次加载成功后就不会再加载了。所以页面一直显示第一次加载的数据,给人的赶脚好像路由没有生效,而我们通过观察浏览器地址栏中的变化可以确定的是这和路由没关系,这对刚刚开始使用的vue的同学可能会产生一点点困扰,其实这和页面的声明周期是相关的,这种情况出现的原因是因为页面在加载后他的大多数钩子函数(mounted,computed…)就不会再次出发了,所以导致页面感觉没有跳转。

一道这种业务需求其实也比较好处理,其实我们不需要页面切换,我们只需要页面中的数据发生改变就好了,我们可以在页面中监听路由地址的变化,当地址变化的时候,我们就重新加载数据。

?


1

2

3

4

5

6

7

watch:{

 "$route":function(to,from){

   //from 对象中包含当前地址

   //to 对象中包含目标地址

   //其实还有一个next参数的,这个参数是控制路由是否跳转的,如果没写,可以不用写next()来代表允许路由跳转,如果写了就必须写next(),否则路由是不会生效的。

 }

}

每当路由发生变化的时候上面的函数都会被触发,我们可以在这个函数中对页面的数据进行重新加载的操作。如果页面结构变化很大,还是建议单独新建一个不同的页面。

原文地址:https://www.cnblogs.com/bootdo/p/11640844.html

时间: 2024-11-05 13:38:07

解决vue多个路由共用一个页面的问题的相关文章

解决vue单页路由跳转后scrollTop的问题

作为vue的初级使用者,在开发过程中遇到的坑太多了.在看页面的时候发现了页面滚动的问题,当一个页面滚动了,点击页面上的路由调到下一个页面时,跳转后的页面也是滚动的,滚动条并不是在页面的顶部 在我们写路由的时候做个处理,如下: import Vue from 'vue' import Router from 'vue-router' Vue.use(Router); Vue.use(Router) export default new Router({ routes: [ { path: '/',

关于vue数组中对象属性变更页面没重新渲染的问题

前段时间做开发的时候用mqtt监听了服务端信息,推送过来的数据要变更数组里面的对象的数据,修改好后但是页面并没有更新,因为javascript机制,vue并不能检测到数组变化,也是查阅知道了$set()函数, 具体用法: arr.$set(index, { name : value }), index: 索引,name: 数组中对象的属性名, value: 要赋给属性的值 this.footerList.$set(i, { siteId : monitorSiteData[j].siteId,

Vue仿微信公众号配置页面

一.需求: 1.刚好公司需要自定义微信公众号菜单配置,在vue的后台管理系统写一个页面,进行菜单配置. 二.页面图片:(menu对象值那个地方只是打印出来看而已,自行去掉) 三.demo链接 https://summer-lin.github.io/vue-wechat-menu-demo/#/ 四.框架 vue + elementUI + mockjs 因为公司是基于vue和elementUI,如果想改其他UI框架,则将el-开头的组件都换了就行了. 五.注意事项: 1.data里面有个men

vue 动态获取路由在对组件进行处理是报错,导致无法进入页面

vue 动态获取路由在对组件进行处理是报错,导致无法进入页面function filterAsyncRouter(asyncRouterMap) { //遍历后台传来的路由字符串,转换为组件对象const accessedRouters = asyncRouterMap.filter(route => { if (route.component) { if (route.component === 'Layout') {//Layout组件特殊处理 route.component = Layou

解决TabActivity中子页面不通过导航跳转到另一个页面的问题

问题:当你的导航在TabActivity中 而子页面的一个按钮需要切换到其中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址:http://download.csdn.net/detail/x605940745/7353695 package com.example.shows; import android.app.TabActivity; import android.content.BroadcastReceiver; im

解决TabActivity中子页面不通过导航跳转到还有一个页面的问题

问题:当你的导航在TabActivity中 而子页面的一个button须要切换到当中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址:http://download.csdn.net/detail/x605940745/7353695 package com.example.shows; import android.app.TabActivity; import android.content.BroadcastReceiver

使用php后台给自己做一个页面路由,配合ajax实现局部刷新。

今天就要放假了,把近来囤积的小玩意儿总结整理一下. 在请求一个html页面来嵌入到当前页会有一个问题,就是跟随请求过来的html他的样式表和脚本会失效.是因为文档加载的先后顺序等问题造成的.因此,加载一些纯文本还好. 举个例子,只有这个问题明白了,我们的原理才好理解. b.html有一个点击事件,但是a.html通过ajax拿到b.html后,如果这个b.html的js不是写在页面里面的,你就会发现没有生效.css样式也一样,都需要重新绑定一下. 首先定义两个页面,一个父页面a.html,一个b

vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题

引入:https://q.cnblogs.com/q/88214/ 解决方法: 添加路由监听,路由改变时执行监听方法 methods:{ fetchData(){ console.log('路由发送变化doing...'); } }, created() { var self = this; self.fetchData(); }, watch:{ '$route':'fetchData' }, 原文地址:https://www.cnblogs.com/ilimengyang/p/9197797

解决 VUE 微信登录验证 【感谢原文:https://segmentfault.com/a/1190000009493199】

[感谢原文:https://segmentfault.com/a/1190000009493199] SPA单页应用中微信授权登录的一点思路 单页应用应该如何解决微信授权登录的尴尬跳转?后退无法返回?主要遇到的问题就是 先进入单页应用,一边渲染页面一边判断用户有没有登录,当判断到没有登录时异步数据请求已经发送出去了,然后要跳转到微信授权页面,这样就浪费了一次网络请求且用户可能要去点击这个数据了结果...跳走了!在授权成功后用户点击后退再次进行授权有没有???本文主要讲述 对于单页应用应该在哪个阶