vuewatch监听data里的数据,vuewatch监听对象及对应值的变化

  vuewatch监听data里的数据,vuewatch监听对象及对应值的变化

  本文主要介绍vue测试和development watch监测数据的数据变化。有需要的朋友可以借鉴一下,希望能有所帮助。祝大家进步很大,早日升职加薪。

  

目录

  观察监控数据变化。新问题迎刃而解。1.首先,将名称的值添加到选项中。2.增加监控中的循环和判断。

  

watch监听data的数据变化

  上一篇文章中提到用elementUI的select实现了远程搜索功能,最终结果如下。

  但是当我们继续开发的时候,我们遇到了一个新的问题,这个问题与上面的功能有关。

  我们先来看一下远程搜索的操作,以及它与数据中数据的关系。

  当您输入“张”进行搜索时,下拉列表中显示的结果都存储在数据选项:[]。我选择一个的时候,比如“张三”,因为选择框绑定了v-model=user_value ,user_value有对应的人的值,id被存储。最后一个ad_real_name是加的,因为我有一个界面要改。本来只需要传id,现在要传收货人的名字。

  

新问题

  之前只传了id,很好办,因为user_value是绑定的,直接用就行了。

  但现在我也需要传递ad_real_name。问题是,当user_value有一个值(id)时,我如何将id对应的名称分配给ad_real_named。

  

解决

  我第一次尝试在同一个事件中调用两个方法,结果不是很好。

  然后我想到了监控。当这个人被点击后,user_value就被赋值了。如果我监视这个字段,当有一个值时,我可以将这个人的名字分配给ad_real_name。

  接下来,实现代码:

  

1. 先把姓名的值,也加到options里

  Options是一个列表,其中的元素是objects {},对象是key-value。我之前只放了{value: ,label:},现在要放ad_real_name进去,变成了{value: ,label: ,ad _ real _ name:}。

  

2. 在监听里增加for循环和判断

  当选择一个人时,for此时循环该选项,遍历每个对象。然后,当对象中的值等于选定的user_value时,该对象中“ad_real_name”的相应值被分配给数据中的字段ad_real_name。

  为了快速验证效果,控制台增加了日志打印。最后的代码是:

  观察:{

  user_value:function() {

  for(设I=0;ithis . options . length;i ) {

  if(this . options[I][ value ]===this . user _ value){

  this . ad _ real _ name=this . options[I][ ad _ real _ name ];

  console . log( print this.ad _ real _ name ,this . ad _ real _ name)

  }

  }

  }

  },

  User_value:表示我想听这个字段。Function():这里写一下监测到变化后要做的处理。打开F12控制台,目标就实现了。

  也许还有其他更快的方法,但毕竟我是前端小白,快速解决问题是第一要务。如果大佬们有更好的写作建议,欢迎随时评论。

  -2021年5月25日-

  后来发现发展中还存在一些问题。F12看了一下,传递给接口的值ad_real_name还是null。

  但是控制台输出这个字段是有价值的。所以我猜测,是不是事件触发的太快了,也就是说ad_real_name实际上是发送了后端请求才可以赋值的。

  所以,我处理了从下后端发送请求的方法,增加了500ms的延迟。

  getReceiveOperatorToken() {

  setTimeout(()={

  这个。$ axios . post(/API/receiveGoodsQuickly/getReceiveOperatorToken ,{

   sm_admin_id: this.user_value

  接收wh id :this . receive _ wh _ id,

  广告真实姓名:this.ad真实姓名,

  “麦基德”:6001

  }).然后((响应)={

  if (response.data[code]===0) {

  this . receive _ operator _ token=response . data[ content ];

  这个。$message({

  类型:“成功”,

  消息:“成功获取收货人的令牌”

  })

  }否则{

  这个。$message({

  类型:警告,

  message:response . data[ error msg ],

  });

  }

  })

  }, 500);//使用setTimeout()

  },

  成功解决。

  以上是vue测试和开发手表监测数据的数据变化详情。更多关于vue测试和开发watch监测数据的信息,请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: