项目场景:
流程审批单据详情页,某一审批节点、审批环节,存在多人审批场景,由于审批人太多,做了个人员的展开和收起点击按钮。
问题描述:
点击收起和展开无反应,状态的改变是通过一个状态showMore变量来改变,change方法可以改变审批节点对象item.showMore属性false/true
原因分析:
分析现象是状态改变了,但是却没有渲染,change方法其实就是这样一行代码
item.showMore = !item.showMore
尝试把这行代码换成this.$set(item, 'showMore', !item.showMore)
,结果仍没成功下渲染
解决方案:
提示:最后发现是showMore不是响应式的,我分析原因有如下:
1.每个审批节点的对象是存在一个数据nameList内[item,…]
2.需要在一开始给item添加showMore属性时,就this.set(item,′showMore′,!item.showMore)因此我在处理审批节点数据的方法里(最初添加showMore属性的时刻),采用this.set(item, 'showMore', !item.showMore)
因此我在处理审批节点数据的方法里(最初添加showMore属性的时刻),采用this.set(item,′showMore′,!item.showMore)因此我在处理审批节点数据的方法里(最初添加showMore属性的时刻),采用this.set(item, ‘showMore’, !item.showMore),这样showMore就是响应的,change方法也无需改变,还是item.showMore = !item.showMore