반응형
vuejs 입력 양식 바인딩(v-for 루프 데이터)
vue에서 post request를 보냅니다. vue for loop은 데이터 객체의 배열이기 때문에 v-for loop로 생성됩니다.데이터 개체 내에는 필드가 있는 다른 개체 집합이 있습니다.데이터 구조를 어떻게 설정합니까?그리고 for 루프가 하나 이상의 객체를 만들기 때문에 ID를 가진 데이터를 vue 데이터 구조로 전달하려면 어떻게 해야 합니까?도움을 주셔서 감사합니다! 감사합니다!
<div v-for="(list, index) in lists.items" :key="list.id">
<div class="card">
<div class="card-header">
{{ list.title }}
</div>
<div class="card-body">
<div class="row">
<div class="col-sm">
Select quantity of item: <br>
<input type="number" placeholder="Quantity of item">
</div>
<div class="col-sm">
<div v-for="addon in list.addons">
Include addons: <br>
<input type="checkbox" :value="addon.id">
<label>{{ addon.name }}</label>
<input type="number" placeholder="Quantity of addon">
</div>
</div>
<div class="col-sm">
<input type="submit" class="btn btn-primary" value="Buy" @click.prevent="buy(index)">
</div>
</div>
</div>
</div>
</div>
보내야 합니다.
[
{ item_id: id },
{ quantity: quantity },
[
[
{ addon_id: id },
{ addon_quantity: quantity }
],
[
{ addon_id: id },
{ addon_quantity: quantity }
]
]
]
추가 기능 배열은 선택되었는지 여부에 따라 단일 개체 또는 여러 개체를 포함할 수 있습니다.
저는 전체 어레이를 개체로 구매 기능에 넣어 문제를 해결했습니다.각 배열에 대한 제출을 클릭해도 같은 루프에 있는 다른 배열은 영향을 받지 않습니다.
@click.prevent="buy(list)"
목록 개체에 대한 입력 번호에 대해서는 다음과 같이 선언했습니다.
<input type="number" placeholder="Quantity of item" v-model="list.main_quantity">
그리고 애드온 루프
<div class="col-sm">
<div v-for="addon in list.addons">
Include addons: <br>
<input type="checkbox" :value="addon.id" v-model="addon.addon_id">
<label>{{ addon.name }}</label>
<input type="number" placeholder="Quantity of addon" v-model="addon.quantity">
</div>
</div>
당신의list
구조란 다음과 같은 것입니다.
list: {
id: 1,
title: 'Foo Baah',
addons: [
{
id: 100,
name: 'Delta'
},
{
id: 101,
name: 'Bravo'
},
{
id: 102,
name: 'charlie'
}
]
}
그런 다음 다음과 같은 방법으로 이 데이터를 처리할 수 있습니다.
function(lists) {
let tempList = []
lists.forEach((item) => {
let tempItem = []
Object.keys(item).forEach((key) => {
if (key == 'addons') {
let tempAddon = []
item.addons.forEach((addonItem) => {
let tempAddonItem = []
Object.keys(addonItem).forEach((addonItemKey) => {
let tempObject = {}
tempObject[addonItemKey] = addonItem[addonItemKey]
tempAddonItem.push(tempObject)
})
tempAddon.push(tempAddonItem)
})
tempItem.push(tempAddon)
} else {
let tempObject = {}
tempObject[key] = item[key]
tempItem.push(tempObject)
}
})
tempList.push(tempItem)
})
return tempList
}
언급URL : https://stackoverflow.com/questions/54406298/vue-js-input-form-binding-from-v-for-loop-data
반응형
'programing' 카테고리의 다른 글
Azure Keyvault - "작업 "list"는 볼트 정책에서 허용되지 않지만 모든 권한이 선택되었습니다. (0) | 2023.07.19 |
---|---|
matplotlib에서 두 수직선 사이에 채우기 (0) | 2023.07.19 |
제너레이터 출력 길이 (0) | 2023.07.19 |
파이썬 .pyi 확장자에서 "i"는 무엇을 나타냅니까? (0) | 2023.07.09 |
SQL Server(C# 클라이언트)에서 많은 데이터를 대량으로 삽입하는 가장 빠른 방법은 무엇입니까? (0) | 2023.07.09 |