Vue.js Как нацелить объект с неизвестным именем в массиве на вход v-модели
Я генерирую объект onclick с автоматически сгенерированным именем. Имя будет отличаться каждый раз. Затем я хочу изменить значения объекта с помощью ввода, используя v-модель. Как я могу нацелить объект, если имя неизвестно? Вот что у меня так далеко:
<ul>
<li v-for="type in types" @click="addNew(type)">{{ type }}</li>
</ul>
<form v-if="Object.keys(newFields).length !== 0">
<input type="text" v-model="newFields[0].?????????">
</form>
<script>
new Vue ({
el: '#app',
data: {
types: [
'date',
'number',
'currency',
'text',
],
savedFields: [
],
newFields: [
]
},
methods: {
addNew: function (type) {
const name = `${type}-${Object.keys(this.savedFields).map(key => key === type).length}`;
if (Object.keys(this.newFields).length == 0) {
this.newFields = Object.assign({}, this.newFields, {
[name]: {
'type': type,
'displayLabel': '',
'defaultValue': '',
}
});
}
},
},
});
1 ответ
Решение
Вы можете сохранить имя как реактивные данные. Например, сохранить его в currentName
<script>
new Vue({
el: "#app",
data: {
//...
currentName: null
},
methods: {
addNew: function (type) {
const name = ""; //...
this.currentName = name;
//...
}
}
});
</script>
и для v-модели,
<input type="text" v-model="newFields[0][currentName]">