vue.js - 如何显示嵌套在模板属性内的数组中的对象的属性?
问题描述
我得到错误:
类型错误:“someArr[0] 未定义”。
当您尝试访问模板内的对象属性时:
<th v-bind:data-id="someArr[0].id">{{someArr[0].name}}</th>
尽管出现错误,但仍会显示数据。
someArr 的源数据:
Array[0]: Object {id: "1", name: "One"}
Array[1]: Object {id: "2", name: "Two"}
是否可以不使用循环直接获取值?
编辑
我在块 created() 内部调用了 fetchData() 方法,该方法通过 Ajax 检索数据并填充模型。现在我将检查您的假设,但为什么会显示数据?
解决方案
欢迎来到 StackOverflow 社区!
当你在 中使用任何值时vue data property
,Vue 会跟踪它的值,这就是框架的全部目的。现在该值连接到响应性,并且您将该值绑定到 UI,因此每当该值发生更改时,Vue 都会跟踪它并重新渲染绑定到该值并反映更新值的模块。
在您的情况下,很明显有一个属性 Ex -
data() {
return {
someArr: []
}
},
created() {
// Await api call
this.someArr = response
}
现在,对于第一次渲染,您的值是empty arr
在异步请求完成并且该值得到更新后更新的值。但显然同步代码会执行,它会抛出someArr[0] is undefined
值为空的错误。
对于这种情况,总是首选检查该值是否存在。
<th v-if="someArr.length" v-bind:data-id="someArr[0].id">{{someArr[0].name}}</th>
现在JS
引擎将不会执行或查找someArr[0].id
数组是否为空,一旦您获取更新的数据,Vue 将重新渲染,这一次它将查找 id,因为数组有一些值
推荐阅读
- sql - 如何从带有条件的sql表中删除重复项
- delphi - 如何启用多个位按钮?
- python-3.x - 在不影响它的情况下测量 python 代码的性能
- python - 如何将变量传递给 Django 表单?
- javascript - 使用带有 javascript 参数的 javascript 调用 PHP 函数
- java - PostgresQL 和 Hibernate 自动生成(不是 PK)值
- sql - 连接 3 个表时重复行
- swift - 成功启用触摸ID后如何在下次打开应用程序时使用触摸ID登录
- asp.net-core - DbContext 上的 ObjectDisposedException
- php - 日期未在数据表中提交