巡检项目里边有个设计调查问卷的功能,就是web端设置很多题,在app上做。
做调查问卷的时候里边有很多逻辑,例如关联逻辑与跳题逻辑,关联逻辑是 当选中这道题关联的某道题的选项的时候,这道题才出现,跳题逻辑是点击这道题的某一个选项的时候直接跳到某道题,逻辑很复杂。
刚开始我是通过操作数组中的元素实现的,当有某道题关联逻辑的时候,删除这个元素,当选中它所关联的选项的时候,再在数组中增加这个元素。当某道题有跳题逻辑的时候,直接把这道题所跳的题目之间的元素都删除。
但是这样频繁的操作数组导致了很多问题,当只设置跳题逻辑不设置关联逻辑,这些都是正常的,当这两个同时设置,就出现问题了。这样操作数组会导致数组一直在变化中,删除之后的元素也无法找到。我曾经想了好久该怎么做,可以实验了很多次都是无法控制这个数据的变化。。。冥思苦想。。。。产品经理也一直在催赶紧改这个bug
终于有一天,我跳出了心中的樊笼,决定不采用改变数组的方法改变页面上题目的变化。决定采用原始方法改变dom元素的style来设置元素的隐藏与显示。用 this.$refs.questionElement 获取元素的DOM,然后元素隐藏的时候动态地设置元素的样式display为none, 元素显示的时候为block。在这当中,数组中的元素一直没有变化,变的是数组中元素的style。问题得到了解决。刚开始想的是vue不直接操作DOM,操作数据。就一直在用改变数据的方法,后来发现不行再用了操作DOM的方法。
也许我做的并不好,当我能力再次提升的时候,我会回来重构一下,寻求最好的方法解决。
久在樊笼里,复得返自然。 记住,遇到什么事解决不了的,要时常换个思路解决问题。