商城网站都有什么功能,哈尔滨企业网站开发报价,有网站和无网站的区别,做二手房网站有哪些资料最近在项目中遇到了这样一个问题#xff0c;在我们的系统中#xff0c;有一个项目的概念#xff0c;用户可以创建多个项目#xff0c;每个项目中又有多个环境#xff0c; 当用户点击项目名称后#xff0c;会进入一个项目的内页#xff0c;左侧菜单栏会有切换环境的功能。…最近在项目中遇到了这样一个问题在我们的系统中有一个项目的概念用户可以创建多个项目每个项目中又有多个环境 当用户点击项目名称后会进入一个项目的内页左侧菜单栏会有切换环境的功能。而每个环境下会有很多资源如文章用户角色以及流水线。
那么在切换一个项目的环境后要求停留在当前的页面并获取当前环境下的文章用户角色等数据。 路由大致是这样 /p/pid/e/eid/job 。pid为项目ideid为环境id。当切换环境后只会改变当前url中的eid参数。
一开始我的设计的方案是 在切换环境时更新路由中的eid然后在每个需要刷新的页面watch route.params.eid从而对页面的数据进行重新加载或初始化。这个方案的有好处也有坏处好处时每个页面都可以在切换环境后 做单独的页面逻辑处理对于公用的数据即不依赖环境的接口数据不需要重新加载。坏处是有时工作量比较大特别是当前页面中间变量比较多时。
我的同事的方案是切换环境时先跳转到一个空的页面在该页面进行重定向。从而实现当前页面的重新加载 mounted。 这样做改动量很少但由于新增了一个中间重定向组件会导致很多意外情况比如白屏路由错乱增加冗余组件。而且我认为这个方案很low。但鉴于当时我没有更好的方案也就先采取了这个方案。比较工作量不多剩下的时间来研究其他事情。
后来我找到了一个更优雅的方案那就是在 e目录下创建eid目录以及eid.vue。 然后在eid.vue中只有一个 routerview组件来渲染eid目录中的具体内容。最最重要的一点是 在routerview组件上 设置 :keyroute.params.eid由于key不同vue会认为二个不同的节点会重新渲染。 这样只要路由中的eid变更后routerview就会重新渲染从而 下层的 文章用户组件重新渲染。这是目前我找到的最优雅的方案。