【发布时间】:2020-12-14 05:30:34
【问题描述】:
我有一个组合框组件来显示来自 API 请求的标签。组件以这种格式接收标签作为道具:
"tags": [ { "name": "Rejected" }, { "name": "Accepted" } ] }
我正在尝试获取值name 并将其设置为v-model,以显示保存在数据库中的标签并在用户需要更新时保留新标签。这是组合框代码:
<v-container fluid>
<v-combobox
v-model="model"
:items="items"
:search-input.sync="search"
hide-selected
hint="Maximum of 5 tags"
label="Add some tags"
multiple
persistent-hint
small-chips
>
<template v-slot:no-data>
<v-list-item>
<v-list-item-content>
<v-list-item-title>
No results matching "<strong>{{ search }}</strong>". Press <kbd>enter</kbd> to create a new one
</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-combobox>
</v-container>
道具
props:{
value:{
required: true,
type:Object
}
}
计算
computed: {
model() {
return Object.entries(this.value.tags).forEach(([key,value]) => {
return this.model = value
})
}
},
当我尝试使用Object.entries(我想用来遍历属性)获取值时的问题是:
TypeError: 无法将 undefined 或 null 转换为对象
【问题讨论】:
-
forEach中的 return 语句无效。tags包含一个数组,所以Object.entries()会有意想不到的结果。不管怎样,很明显,this.value.tags是undefined或null。在控制台中输入这个并观察它的工作:Object.entries({name: 'test', number: 42}) -
那么如何在未定义或空类型上进行forEach?
-
嗯...你不能。
forEach()是 JavaScript 中 Array 对象(以及其他一些类似 Array 的对象)的方法。这意味着您可以从有效的 Array 对象中调用它。一个空对象仍然是一个对象,所以[].forEach(console.log);可以工作,但没有做任何事情,因为没有什么可以迭代。 -
你是说这个问题没有办法解决?
标签: javascript vue.js vuetify.js