uview的Collapse的动态刷新问题

简单的说就是通过网络请求、延时等异步操作获取数据后,数据不会展示出来,我先来重现一下:

  • html部分
<template>
	<view>
		<u-collapse>
			<u-collapse-item title="下面循环的数据展示不出来" open>
				<p>写死的p标签</p>
				<p v-for="(item,index) in testData" :key="index">{{`p标签循环${item}`}}</p>
			</u-collapse-item>
		</u-collapse>
	</view>
</template>
  • JS部分
<script>
	export default {
		data() {
			return {
				testData:[]
			}
		},
		onLoad() {
			setTimeout(()=> {
				this.testData = ['一','二']
			},1000)
		}
	}
</script>

可以看到,我去延时设置了testData的值,这是代码运行后的界面:
在这里插入图片描述
可以看到v-forp标签并没有显示出来。

直接上解决后的代码:

  • html部分
<template>
	<view>
		<u-collapse ref="collapse">
			<u-collapse-item title="下面循环的数据展示不出来" open>
				<p>写死的p标签</p>
				<p v-for="(item,index) in testData" :key="index">{{`p标签循环${item}`}}</p>
			</u-collapse-item>
		</u-collapse>
	</view>
</template>
  • JS部分
<script>
	export default {
		data() {
			return {
				testData:[]
			}
		},
		onLoad() {
			setTimeout(()=> {
				this.testData = ['一','二']
				this.$nextTick(() => {
					this.$refs.collapse.init()
				})
			},1000)
		}
	}
</script>

修改之后,界面上就显示出来了:
在这里插入图片描述
就是在下一次页面刷新(nextTick)时,调用了collapse组件本身的init()方法。
当然,你还可以通过v-if来达到相同的效果,没有数据的时候不展示,数据获取并赋值完毕后,进行展示。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值