乐趣区

iview-admin-打开多个来源于同组件的详情页面切换时页面不刷新问题解决方法

做了个后台管理系统,使用的 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()
        }
      }
    },
退出移动版