在 vue.js 中查找数组长度时无法读取未定义的属性“长度”

Posted

技术标签:

【中文标题】在 vue.js 中查找数组长度时无法读取未定义的属性“长度”【英文标题】:Cannot read property 'length' of undefined in finding length of an array in vue.js 【发布时间】:2021-02-13 03:55:35 【问题描述】:

我在 vue.js 中有这种数据结构

 data() 
     return 
      formData: new Form(
        files:[],
        Count:5,
        ..
  

我正在尝试使用此代码获取长度:

 <div class="image-input" v-if="this.formData.files.length < this.formData.Count">

当我运行此代码时,我在控制台中收到此错误:

TypeError: 无法读取未定义的属性“长度”

该错误在这行代码中,v-if="this.formData.files.length

非常感谢任何帮助。

【问题讨论】:

您不需要使用模板中的this 引用。 @ChristianCarrillo:我尝试删除它但仍然遇到同样的错误 你的意思是v-if="formData.files.length &lt; formData.Count" @ChristianCarrillo: 是的,我试过这个 v-if="formData.files.length Form 类存在吗?因为你的 formData 是它的一个实例 【参考方案1】:

避免在模板部分使用'this'操作符

<div class="image-input" v-if="formData.files.length < formData.Count">

【讨论】:

【参考方案2】:

如果您真的想使用 Form 类,那么您需要为构造函数使用右大括号和右括号,为返回的对象使用右大括号(除非您的意思是用 ... 暗示所有这些:- )

但通常在 Vue 数据中,我们只使用普通对象而不是类。所以我想知道你的意思是:

data() 
     return 
        formData:
          files:[],
          Count:5,
          ..
         
      
  

【讨论】:

以上是关于在 vue.js 中查找数组长度时无法读取未定义的属性“长度”的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 无法读取未定义的属性(读取“路由器”)错误

TypeError:无法读取reactjs中未定义的属性“长度”

Vue.js:TypeError:无法读取未定义的属性“$router”?

无法在 vue.js 中读取“未定义”的属性

TypeError:无法读取未定义的 vue js 的属性“get”

无法在 Vue.js 中设置未定义的属性“产品”[重复]