项目场景:
流程审批单据详情页,某一审批节点、审批环节,存在多人审批场景,由于审批人太多,做了个人员的展开和收起点击按钮。
问题描述:
点击收起和展开无反应,状态的改变是通过一个状态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.
s
e
t
(
i
t
e
m
,
′
s
h
o
w
M
o
r
e
′
,
!
i
t
e
m
.
s
h
o
w
M
o
r
e
)
因
此
我
在
处
理
审
批
节
点
数
据
的
方
法
里
(
最
初
添
加
s
h
o
w
M
o
r
e
属
性
的
时
刻
)
,
采
用
t
h
i
s
.
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