vue watch怎样同时监听两个值的变化并执行方法?

发布于 2022-09-06 09:47:17 字数 196 浏览 20 评论 0

watch:{
      city(cur,old){
          this.loadTop();
      },
      country(cur,old){
//        this.loadTop();
      },
    }

如上,我想在城市和国家都变化的时候执行刷新的方法,而不是单一执行刷新

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一绘本一梦想 2022-09-13 09:47:17

用computed定义一个address对象吧,然后再去watch addres

data() {
  return {
    city: '',
    country: ''
  }
},
computed: {
  address() {
    const { city, country } = this
    return {
      city,
      country
    }
  }
},
watch: {
  address: {
    handler: function(val) {
      console.log('address change: ', val)
    },
    deep: true
  }
}

只的在computed里面调用也行,不过要使用$nextTick,不然值会是更新前的值。

data() {
  return {
    city: '',
    country: ''
  }
},
computed: {
  address() {
    const { city, country } = this
    this.$nextTick(() => {
      console.log(this.city, this.country, 3333)
    })
    return {
      city,
      country
    }
  }
},
挽容 2022-09-13 09:47:17

不能同时监听两个值,
不过你可以

data () {
    return {
        city: '',
        oldCity: '',
        country: '',
        oldCountry: ''
    }
}
watch:{
      city(cur,old){
            if (this.country !== this.oldCountry) {
                this.loadTop();
                this.oldCountry = this.country
            }
      },
      country(cur,old){
            if (this.city !== this.oldCity) {
                this.loadTop();
                this.oldCity = this.city
            }
      },
    }
国产ˉ祖宗 2022-09-13 09:47:17

可以做个计数器
国家改变: count++;
城市改变: count++;

watch: {
    count(value){
       if(2 === value) {
            // 触发code
            
           this.count = 0;
       }
   }
}

抛砖引玉啊, 方法比较拙, 对每个改变的执行此处的判断并没有写, 如果觉得方法可行再补上

不过如果是联动的话, 国家变了, 城市自然为空, 所以你说的逻辑好像不成立, 我只是猜测.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文