通常有两种情况:

1、在模板的html标签上使用length报错

vue 中使用 length判断的时候,有时会报错,如下:


1
2
<div class="item_list" v-if="form.checkVal.length > 0" >列表1</div>
<div class="item_list" v-else >列表2</div>

解决方法:

改成: 


1
2
3
 form.checkVal !== undefined  &&  form.checkVal.length > 0  
<div class="item_list" v-if="form.checkVal !== undefind && form.checkVal.length > 0" >列表1</div>
<div class="item_list" v-else >列表2</div>

同时,在项目中发现有加了undefined判断仍然报错的情况,解决办法同方法4,外层加个div(view)判断数据是否存在,存在后再渲染即可!

2、在js中使用length报错,如下


1
2
3
if(res.Data.length == 1){
this.tableData1 = res.Data[0];
}

报错原因:此时res.Data是无数据为undefined的,所以找不到 res.Data.length。

解决办法:在加一层判断,首先保证res.Data存在不为null或undefined改为,如下


1
2
3
4
if(res.Data){
if(res.Data.length == 1){
this.tableData1 = res.Data[0];
}

3.可能在data中声明了两个相同的属性,导致冲突,或者写错某个单词导致没有数据

4.判断是否存在


1
2
3
4
<div v-if="poiInfo2.discounts2">
     <img :src="poiInfo2.discounts2[0].icon_url" >
     {{poiInfo2.discounts2[0].info}}
</div>