为了账号安全,请及时绑定邮箱和手机立即绑定

请问在vue中,遇到拿到数据之前,dom提前渲染数据导致报错,这种问题可以怎么解决?

请问在vue中,遇到拿到数据之前,dom提前渲染数据导致报错,这种问题可以怎么解决?

鸿蒙传说 2019-03-15 18:15:24
各位前辈好,最近在写vue的时候遇到一个难以解决的问题,是这样的数据是通过调用api,然后赋值给我的变量然后通过模板渲染,此时是没问题的,但是!!我遍历数据的数组,它里面有一个数组,但是我像上面这样写的话,控制台会报错!我问过其他人,他们是说数据在请求拿到之前,dom已经开始渲染数据了,导致后面的item.artists[0].name这句话会报错,我不确定到底是这个,还是前面的item.name,,总之就是拿到数据之前,已经渲染数据,导致报错,我想知道怎么延迟渲染!!!???怎么确保拿到数据之后再渲染!!??打扰了,望各位前辈指教!
查看完整描述

7 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

你给searchResult初始化一个值比如[{name:'',artist:'',...}],没返回数据就渲染这个初始值,这个过程很快,基本上察觉不出来


查看完整回答
反对 回复 2019-03-26
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

报错不是说的很清楚吗。item.artists[0] undefined了。


查看完整回答
反对 回复 2019-03-26
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

加一个if判断


查看完整回答
反对 回复 2019-03-26
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

看下这个方法 Vue.nextTick( [callback, context] )
// 修改数据
vm.msg = 'Hello'
// DOM 还没有更新
Vue.nextTick(function () {
// DOM 更新了
})
这个方法就是防止这种情况的

查看完整回答
反对 回复 2019-03-26
?
守着一只汪

TA贡献1872条经验 获得超3个赞

先用v-if将标签隐藏,请求返回后再将v-if中的值置为真值


查看完整回答
反对 回复 2019-03-26
  • 7 回答
  • 0 关注
  • 2989 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号