下拉框的watch监听与change事件

区别:

提示:这里简述两者的区别:

 1. @change

  1. @change是一个事件监听器,用于监听特定DOM元素的变化事件,通常用于表单元素(如输入框、下拉框等)的值变化。
  2. 它在用户与表单元素交互并提交了变化时触发,比如输入框失去焦点或者用户选择了一个选项。
  3. @change只能用于具有特定的DOM事件(如输入框的输入事件、下拉框的选择事件等)。
  4.  适用于处理用户交互引起的数据变化。

 2. watch

  1. watch是一个监听器,用于观察数据的变化,并在数据变化时执行相应的操作。 
  2. 它可以监听任意数据的变化,不限于特定的DOM事件,是随时监听数据变化,数据一变化就触发,而不是失去焦点等dom事件触发。
  3. 适用于对数据进行深层次的监控和处理,比如当一个数据的某个属性变化时执行一些操作。

问题描述

现有两个下拉框与两个输入框,两个下拉框一个是线路下拉框一个是选人的下拉框,输入框一个是本次发票金额,一个是累计发票金额

线路是最主要的,选人是根据线路的id来选人,累计发票金额(含本次)是根据线路id查询后加上本次发票金额输入框的值

如下图:

下拉框的watch监听与change事件_第1张图片

如果用监听

因为累计发票金额(含本次)与选择审批人的数据都是根据线路来获取的,那么累计发票金额(含本次)与选择审批人的数据请求就放在线路id的监听中

在返显的时候,

后台会返显线路,监听到线路变化就会请求累计发票金额(含本次)与选择审批人的数据

但是 累计发票金额(含本次)是要用后台返给自己的数据而不是 请求累计发票金额(含本次)的接口然后再加上本次发票金额输入框的值,而是直接使用后台返回的数据(所以应该是用@change事件只有在线路变化才重新请求累计发票金额含本次,不是用监听线路)

选择审批人的数据也是监听到后台返显的线路重新请求,但是后台返回的上次填写时已经选中的值就没有了,因为这个时候有可能线路的还没有赋值上,那么就不会有请求选择审批人的数据(所以应该是在返回线路的时候就请求审批人的数据,不是用监听线路)


原因分析:

提示:这里填写问题的分析:

watch监听是在赋值的时候就会触发,回显也是赋值,也会触发

change在值变更的时候才会触发,回显不属于值的变更,不会触发


解决方案:

提示:这里填写该问题的具体解决方案:

下拉框的watch监听与change事件_第2张图片

你可能感兴趣的:(android)