验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

vue中怎么监听url地址栏参数变化

阅读:904 来源:乙速云 作者:代码code

vue中怎么监听url地址栏参数变化

      vue监听url地址栏参数变化

      问题:

      在开发过程中我们有可能会遇到一个问题,就是在一个vue项目中引入了一个组件,点击这个组件跳转的还是当前的页面,只是传递的参数发生了变化,这个时候我们传递的参数就不能正常的赋值了,这是因为页面没有重新加载,所以我们就要监听地址栏的参数变化了。

      1、传递参数

          this.$router.push({
              path: url,//路由地址
              query:{//参数
                  type: 1
              }
          });

      2、监听参数变化

          watch: {
              //监听路由地址的改变
              $route:{
                  immediate:true,
                  handler(){
                      if(this.$route.query.type){//需要监听的参数
                          this.type = this.$route.query.type
                      }
                  }
              }
          }

      vue检测url的变化-Kaiqisan

      之前尝试在vue中监听路由变化,发现在vue中无法使用window.location来监听,于是另外找了一种方法。

      这个检测不会去检测域名,端口,协议的变化,只会检测端口后面的内容的变化,检测路由的值和参数的值.

      '$route': {
          handler(val) {
              console.log(val);
          },
          deep: true
          // immediate: true
      },

      在vue中去监听$route就可以了,这里面包含了端口号后面的所有信息。

      每一次跳转路由都会监听到路由的变化(甚至可以监听锚的变化和参数的变化),记得添加深度监听(其实在watch里面,待监听参数命名这里如果使用字符串—(’$route’)—的话就可以直接进入深度监听)

      PS:如果您只是想要监听路由 单一部分 的变化的话,建议把监听对象写得更加详细一些,比如…

      '$route.path'(val) {
          // ........
      }
      
      '$route.query'(val) {
          // ........
      }

      虽然还是深度监听,但是性能会大有提高。

      最后测试的部分就交给大家了!

      注意:建议把这个监听方法放在一个所有页面都会使用的公共组件上面,这样就可以常驻地监听而不会因为组件的切换而导致监听的失效。

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>