मेरे पास मेरे Vue उदाहरण में आइटम के नाम के साथ एक वस्तु है
<script>
export default {
data() {
return {
selected: "",
items: {
item1: [{ selected: "", inputType: "", inputTarget: "" }],
item2: [{ selected: "", inputType: "", inputTarget: "" }]
},
textarea: ""
};
},
methods: {
selectboxAction(index) {
this.items.item1.forEach(val => {
if (val.selected.toLowerCase() === "file") {
this.$refs.inputData[index].type = "file";
} else {
this.$refs.inputData[index].type = "text";
}
});
}
}
};
</script>
मैं इसकी एक सरणी कैसे ला सकता हूं, मैं प्रत्येक आइटम पर कुछ शर्त रखना चाहता हूं, लेकिन इसमें 2 से अधिक आइटम हो सकते हैं, शायद भविष्य में यह 100 तक पहुंच जाए
जैसा कि आप SelectboxAction विधि में देख सकते हैं, मैं केवल एक आइटम लाने में सक्षम था जो इस मामले में आइटम 1 है
मैं वस्तुओं से सभी सरणियाँ कैसे ला सकता हूँ, न कि केवल एक item1
0
Mohammad
15 फरवरी 2021, 17:07
3 जवाब
सबसे बढ़िया उत्तर
मेरा सुझाव है कि आप एक कम्प्यूटेड गेट्टर का उपयोग करके अपने डेटा को प्रारूपित करें और अन्य की तरह Object.keys का उपयोग करें सुझाव दिया।
get itemsArray() {
return Object.keys(this.items).map((key) =>
return this.items[key];
});
}
2
Mike
15 फरवरी 2021, 20:16
अपने 'आइटम' गुणों को 'आइटम 1', 'आइटम 2', आदि नाम देने के बजाय, यह बेहतर होगा कि 'आइटम' को एक सरणी बनाएं और प्रत्येक 'आइटम' ऑब्जेक्ट में 'आईडी' प्रॉपर्टी जोड़ें:
data() {
return {
selected: "",
items: [
{ id: 1, selected: "", inputType: "", inputTarget: "" },
{ id: 2, selected: "", inputType: "", inputTarget: "" }
],
textarea: ""
};
},
1
Tim
15 फरवरी 2021, 18:26
आप कुछ ऐसा कर सकते हैं
methods: {
selectboxAction(index) {
Object.keys(this.items).forEach(val => {
this.items[val].forEach(item => {
if (item.selected.toLowerCase() === "file") {
this.$refs.inputData[index].type = "file";
} else {
this.$refs.inputData[index].type = "text";
}
});
});
}
}
1
Amaarrockz
15 फरवरी 2021, 20:03
Object.values(this.items)
developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…this.items.item1.forEach(...);
=>for (let key in this.items) { this.items[key].forEach(...); }
, उदा. wandbox.org/permlink/ZM707NdQVKE9iJAX