区别:
提示:这里简述两者的区别:
1.
@change
- @change是一个事件监听器,用于监听特定DOM元素的变化事件,通常用于表单元素(如输入框、下拉框等)的值变化。
- 它在用户与表单元素交互并提交了变化时触发,比如输入框失去焦点或者用户选择了一个选项。
- @change只能用于具有特定的DOM事件(如输入框的输入事件、下拉框的选择事件等)。
- 适用于处理用户交互引起的数据变化。
2.
watch
- watch是一个监听器,用于观察数据的变化,并在数据变化时执行相应的操作。
- 它可以监听任意数据的变化,不限于特定的DOM事件,是随时监听数据变化,数据一变化就触发,而不是失去焦点等dom事件触发。
- 适用于对数据进行深层次的监控和处理,比如当一个数据的某个属性变化时执行一些操作。
问题描述
现有两个下拉框与两个输入框,两个下拉框一个是线路下拉框一个是选人的下拉框,输入框一个是本次发票金额,一个是累计发票金额
线路是最主要的,选人是根据线路的id来选人,累计发票金额(含本次)是根据线路id查询后加上本次发票金额输入框的值
如下图:
如果用监听
因为累计发票金额(含本次)与选择审批人的数据都是根据线路来获取的,那么累计发票金额(含本次)与选择审批人的数据请求就放在线路id的监听中
在返显的时候,
后台会返显线路,监听到线路变化就会请求累计发票金额(含本次)与选择审批人的数据
但是 累计发票金额(含本次)是要用后台返给自己的数据而不是 请求累计发票金额(含本次)的接口然后再加上本次发票金额输入框的值,而是直接使用后台返回的数据(所以应该是用@change事件只有在线路变化才重新请求累计发票金额含本次,不是用监听线路)
选择审批人的数据也是监听到后台返显的线路重新请求,但是后台返回的上次填写时已经选中的值就没有了,因为这个时候有可能线路的还没有赋值上,那么就不会有请求选择审批人的数据(所以应该是在返回线路的时候就请求审批人的数据,不是用监听线路)
原因分析:
提示:这里填写问题的分析:
watch监听是在赋值的时候就会触发,回显也是赋值,也会触发
change在值变更的时候才会触发,回显不属于值的变更,不会触发
解决方案:
提示:这里填写该问题的具体解决方案: