当前位置 主页 > 服务器问题 > Linux/apache问题 >

    vue中监听路由参数的变化及方法

    栏目:Linux/apache问题 时间:2019-12-07 16:16

    在vue项目中,假使我们在同一个路由下,只是改变路由后面的参数值,期望达到数据的更新。

    mounted: () =>{
       this.id = this.$route.query.id;
       this.getdetail()
    }

    getDetail()方法中会用到this.id这个参数,在同一页面切换id的值,并不会触发vue的声明周期函数。

    可以添加路由监听:

    watch: {
      $route: {
         handler() {
           this.id = this.$route.query.id;
           this.getDetail();
           //深度监听,同时也可监听到param参数变化
        },
        deep: true,
      }
     }   

    ps:下面看下vue中监听路由参数变化的方法

    在vue项目中,假使我们在同一个路由下,只是改变路由后面的参数值,如果不监听路由参数值的变化,页面无数据刷新,需手动刷新浏览器,这样做就不是我们的预期效果。

    举例:当前路由为  /pjthome?pjtid=123456

    mounted: function () {
       this.pjtid = this.$route.query.pjtid
       this.pjtdetail()
    },

    在页面pjtdetail()方法中,需要用到pjtid这个参数,假如在同一页面有相似项目切换,只是pjtid发生变化,在切换时,并未重新加载数据,原因是跟vue的生命周期有关,具体该解决这个问题,添加路由监听即可。

    exp:

    watch: {
       $route(){
        this.pjtid = this.$route.query.pjtid
       },
       pjtid() {
        this.pjtdetail()
       },
    }

    解决。

    总结

    以上所述是小编给大家介绍的vue中监听路由参数的变化及方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对IIS7站长之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!