uniapp或者vue在v-for循环的数据更新的时候,直接赋值是检测不到数据的更新去刷新dom节点的。
在vue官方文档“数组更新检测”https://cn.vuejs.org/v2/guide/list.html#%E6%95%B0%E7%BB%84%E6%9B%B4%E6%96%B0%E6%A3%80%E6%B5%8B 中给出了通过pop()和push()或者用vm.
s
e
t
(
v
m
.
i
t
e
m
s
,
i
n
d
e
x
O
f
I
t
e
m
,
n
e
w
V
a
l
u
e
)
去
更
新
数
据
,
但
是
在
试
过
先
p
o
p
(
)
再
p
u
s
h
(
)
等
操
作
后
发
现
还
是
无
法
刷
新
d
o
m
节
点
。
最
后
找
到
一
个
简
单
粗
暴
的
方
法
,
用
v
−
i
f
的
t
r
u
e
和
f
a
l
s
e
转
换
销
毁
和
重
置
节
点
,
再
用
t
h
i
s
.
set(vm.items, indexOfItem, newValue)去更新数据,但是在试过先pop()再push()等操作后发现还是无法刷新dom节点。 最后找到一个简单粗暴的方法,用v-if的true和false转换销毁和重置节点,再用this.
set(vm.items,indexOfItem,newValue)去更新数据,但是在试过先pop()再push()等操作后发现还是无法刷新dom节点。最后找到一个简单粗暴的方法,用v−if的true和false转换销毁和重置节点,再用this.nextTick异步刷新dom节点。代码如下:
<view class="cart-list" v-if="hackReset">
this.hackReset = false
this.$nextTick(() => {
this.hackReset = true
})