vue和uniapp的v-for循环数据更新时,刷新dom节点

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()domviftruefalsethis.nextTick异步刷新dom节点。代码如下:

<view class="cart-list" v-if="hackReset">

	this.hackReset = false
	this.$nextTick(() => {
	this.hackReset = true
	})

你可能感兴趣的:(uniapp,vue)