javascript - 在 v-for (select) 中访问嵌套索引
问题描述
我有一个结构如下的对象:
{
"cad_id": "547",
"dropdowns": [
{
"dropdown_id": "6",
"table_name": "ambulances",
"column_name": "ambulance",
"value": "G3,G4,G5,R1"
},
{
"dropdown_id": "7",
"table_name": "ambulances",
"column_name": "hospital_name",
"value": "Royal Free,Royal Free Cath Lab,Royal Free Maternity,UCH,Barnet,Barnet Marternity"
}
],
"responders": [
{
"type": "ambulance",
"id": "41",
"cad_id": "547",
"ambulance": "G3",
"call_sign_1": null,
"call_sign_2": null,
"call_sign_3": null,
"call_sign_4": null,
"incident_arrival_time": null
}
]
}
在 HTML(视图)中,我想显示一个选择下拉列表,其中包含从数组value
中的键填充的选项。然后它应该将所选选项显示为与数组中的键dropdowns
匹配的选项。ambulance
responders
这是我尝试过的 Vue 代码,但我一直收到一个错误,说x
未定义(在选择中的 v-for 中):
<section v-for="(i, index) in responders">
<select class="form-control" v-model="i.ambulance">
<option value="">--Please Select--</option>
<section v-for="x in dropdowns" v-if="x.table_name == 'ambulances' && x.column_name == 'ambulance'">
<option v-for="option in x.value.split(',')" :value="option">{{ option }}</option>
</section>
</select>
</section>
PS。我知道数据的结构不是最好的,但是我无法控制从服务器更改它。
解决方案
不建议在同一个组件中使用 v-for 和 v-if,
最好使用计算属性来过滤元素,然后对计算属性进行 v-for
{
computed: {
filteredItems() {
return this.dropdowns.filter(x => x.table_name == 'ambulances' && x.column_name == 'ambulance') //your condition
}
}
}
推荐阅读
- mozilla-deepspeech - 如何查看 Mozilla 的 DeepSpeech 模型中的参数数量?
- html - 为什么带有“display:inline;line-height:0”的元素中的文本在不同的行中仍然有不同的 yAxis 位置?
- python-3.x - 根据python中的y轴值查找x轴值
- ios - 降价和链接的特定正则表达式
- python - 如何在 Python 中获取最近的上一个日期?
- r - 使用 ggplot 在循环中按名称访问字段
- c++ - 如何在主线程忙时获取所有 mousemove 事件 Windows MFC C++
- angular - ngrx 效果能否分派相同的动作两次
- python - 在 Flask 应用程序中从外部应用程序上下文访问应用程序对象
- python - 如何使用 Matplotlib 在 python 中创建不对称小提琴图