vue computd watch 问题

比如一个接口依赖a,b,c,d… 等多个参数,只要其中一个变化就需要调用接口,接口返回后处理结果需要根据a,b,c,d 参数名分别处理,下面是我想到的方法,问题是获取不到变化的属性名。有没有更好的解决方案

//伪代码
computed:{
    params(){
      return {
          a:a,
          b:b,
          c:c,
          d:d,
          ... 
      }
    }
},
watch:{
    'params':{
        deep:true,
        handler(newValue,oldValue){
            let param=newValue;
            1, 调用接口 参数 param
            2,(重点) 返回结果 根据a,b,c,d 等属性名分别处理
            //方法1:
            //如果在这里能获取到属性名 a , b,c  可以解决
            //问题是,这里不知道怎么获取变化的属性名           

        }
    }
}
阅读 2.1k
3 个回答

vue中的计算属性通常是组合后的响应数据,观察属性则是对那些的有无更新的属性作出处理。换而言之,你观察的属性必须是间接依赖于响应属性,也就是data方法所返回的数据对象。

  1. 如果参数受表单控制,那么我建议你侦听表单元素的 change 事件
  2. 如果参数由父元素传进来,那么用 watch
  3. 反正你都要重新请求,具体哪个属性变了也不重要呀

params变动时,缓存它的快照就可以。

this.paramsSnapshot = JSON.stringify(this.params);

然后要比哪个比哪个

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题