做了个后台管理系统,使用的 iview admin 框架,在开发列表打开详情页面时遇到的问题
- 问题描述
当打开多个详情页之后,在详情页面之间切换,页面数据停留在第一个页面的数据, -
相关文档
当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
来源于 Vue Router 文档 -
解决方法:
了解到问题后,我想到一种解决方法,用计算属性与监听函数监听路由变化,触发页面数据更新函数,试过直接监听 $route,结果会触发,不过实际应用会报错,感觉应该是 $route 是全局对象的原因,所以我用了计算属性将它转化为一个动态变量来监听,个人试用正常
-
相关代码
computed: { // 计算属性的 getter onQuery: function () { // `this` 指向 vm 实例 return this.$route.params } }, watch: {'onQuery' (old, newValue) { // 对路由变化作出响应... if (newValue) {this.getPageInfo() } } },