效果如图,页面初始效果:
鼠标悬浮后效果:ios
在声动语商项目中,需求更改后,出现一个:教师发布课程的时候要求一个课程同时发送给多个班级。
如今的接口:每次只能发送一个班级的id,也就是:classesId字段只能传一个班级的id,所以为了知足这个新需求就想着:将select修改成多选,使用for循环循环用户选中的班级数组,使用axios发送建立课程请求。更改后的界面以下图所示:axios
问题复现:
思路:使用for循环,发送axios,发现请求发送的data中classesId老是最后一个,立马想到了闭包,觉得是闭包问题,因而使用数组
这种方法想着解决下闭包,从新发送axios请求发现classesId数据仍是不对。而后自我怀疑,觉得本身写的闭包是否是有啥问题....闭包
因而使用了第三方lodash的forEach方法一下,将axios请求写到了foreach里面,从新运行仍是发现不对。。。。异步
觉得this指向有问题,有将this从新赋值,结果:仍是同样。。。。。。。this
因而又调整了一下代码:将axios请求从新封装出去,从新在for循环里面调用,结果:仍是不对spa
打断点发现for循环出来的classesId数据是对的,可是加上axios请求,每次请求发送的classesId还只是最后一个的接口
又想着是否是axios的异步请求影响的,因而将axios改成了同步请求,结果:仍是同样,这个时候,整我的就有点很差了。。。。图片
眼看着快要下班了,而这个问题已经看了一下午尚未解决,就很着急啊啊啊啊ip
努力回想本身曾经这样请求过啊,当时并无发生任何不对。因而想着将请求的数据简化一下,就将发送的data数据简化到了只有classesId,想着只有一个数据了,就没有再定义任何的变量,直接将数据写到了axios请求内部。运行发现:classesId居然是对的。。。。因而立马将其余数据都写到了axios请求内容,发现结果对了,天啊,终于看到了但愿。。。。
将这两种数据的定义及发送方式对比,分析问题多是由于 js赋值的深拷贝和浅拷贝形成的。。。
解决过程当中还试了watch监听for循环classesId的变化,发现也只能监听获取到最后一个classesId.,并不能解决这个问题