【发布时间】:2020-12-02 11:24:18
【问题描述】:
我正在尝试使用 v-for 在 vue 中创建多选问题。
选择菜单和选项通过 JSON 填充。
我无法按预期获取选择结果。
当我选择选项时,我无法保留值数据。
例如: 当我从第二个菜单中选择任何选项时,第一个菜单中的选择被清除。第一个菜单反之亦然。
new Vue({
el: "#app",
data: {
selectedValue: [],
checklists: [
{
"id":1,
"heading":"Environment",
"deleted_at":null,
"created_at":null,
"updated_at":"2020-08-08T13:24:22.000000Z",
"checklist_value":[
{
"id":1,
"checklists_id":1,
"values":"Indoor",
"notes":null,
"deleted_at":null,
"created_at":"2020-08-08T13:03:50.000000Z",
"updated_at":"2020-08-08T13:03:50.000000Z"
},
{
"id":2,
"checklists_id":1,
"values":"Outdoor",
"notes":null,
"deleted_at":null,
"created_at":"2020-08-08T13:13:27.000000Z",
"updated_at":"2020-08-08T13:13:27.000000Z"
}
]
},
{
"id":2,
"heading":"Location of Camera's",
"deleted_at":null,
"created_at":"2020-08-08T11:41:31.000000Z",
"updated_at":"2020-08-08T13:27:59.000000Z",
"checklist_value":[
{
"id":3,
"checklists_id":2,
"values":"Parking",
"notes":null,
"deleted_at":null,
"created_at":"2020-08-08T13:28:45.000000Z",
"updated_at":"2020-08-08T13:28:45.000000Z"
},
{
"id":4,
"checklists_id":2,
"values":"Balcony",
"notes":null,
"deleted_at":null,
"created_at":"2020-08-08T13:28:53.000000Z",
"updated_at":"2020-08-08T13:28:53.000000Z"
}
]
}
]
},
methods: {
getSelectedID(event) {
console.log(this.selectedValue);
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div class="input-field col s12" v-for="(checklist, index) in checklists">
<select v-model="selectedValue" @change="getSelectedID($event)" multiple="multiple">
<option disabled>Choose options</option>
<option v-for="(value,index) in checklist.checklist_value" :value="value.id">{{value.values}}</option>
</select>
<label>{{checklist.heading}}</label>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script>
$(document).ready(function() {
$('select').formSelect();
});
</script>
期望 v-model 应该为选择菜单创建一个新对象并将选项映射为一个数组,以便我可以将其传递到数据库并保存它们。
如果你能告诉我我哪里错了,我将不胜感激。
【问题讨论】:
标签: javascript vue.js vuejs2