[英]Vue JS v-select cannot diplaying text from json
我在编辑数据时很难使用 vue-select (v-select)。 目前v-select显示的是ID,应该出现的数据是文本或者label。
const detailPresensi = {
detail_data: [{
"id": 3,
"project_id": 1,
"duration_minute": 300,
"detail": "Text 1"
}, {
"id": 4,
"project_id": 2,
"duration_minute": 203,
"detail": "Text 2"
}]
}
let options = {
"1": "AAA",
"2": "BBB",
"3": "CCC",
};
这是脚本: jsfiddle
我的期望:如果 detail_data 中的数据数组有 project_id: 1 那么显示的数据是名称“AAA”,
谢谢。
尝试向数据添加opsi
,数据属性需要为 function:
data() {
return {
...,
opsi: []
}
}
编辑-
我相信你需要先解决一些问题——
opsi
属性。现在,关于始终在所选选项中显示 id 的问题,因此,这背后的原因是使用了 reduce。 它在文档的部分Caveats with reduce中提到 -
reduce 最常见的问题是当组件显示你的减少值而不是它的 label 时。当你提供 Vue Select 一个值或具有 reduced_ 值的 v-model 绑定时,会发生这种情况,但选项数组中不存在完整选项 object .
因此,要么删除 reduce 要么如果想继续reduce
,您需要执行以下操作-
v-select
,这意味着每个v-select
都应该有自己的v-model
绑定,因此为每个数据项创建一个selected
变量并使用v-model="item.selected"
。opsi
数组中显示受尊重的项目 ID 的 label,默认情况下将其放入项目的选定变量中,如下所示 -detail_data: [{
"id": 3,
"project_id": 1,
"duration_minute": 300,
"detail": "Text 1",
"selected": [{
"id": 1,
"name": 'AAA'
}]
},
{
"id": 4,
"project_id": 2,
"duration_minute": 203,
"detail": "Text 2",
"selected": [{
"id": 2,
"name": 'BBB'
}]
}
]
<v-select
:options="opsi"
:reduce="opsi => opsi.id"
label="name"
v-model="item.selected"
:required="!item.project_id"
>
</v-select>
阅读更多关于-
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.