#javascript #vue.js
Вопрос:
Я борюсь с добавлением массива объектов к существующему массиву объектов с помощью Vue.js. На самом деле я пытаюсь сделать повторитель формы в другом повторителе формы. Первое мне удалось сделать без проблем, но второе заставляет меня по-настоящему нервничать.
Я пробовал использовать функции соединения и нажатия, но это работает не так, как ожидалось.
Итак, это функция для повторителя первой формы (и она работает)
Кстати: родитель определяется как массив в состоянии.
addParent: function () {
this.form.parent.push({
name: '',
age: '',
});
},
Таким образом, результат выглядит следующим образом:
parent: [
{
name: 'My name',
age: 32,
}
]
Поэтому в этот объект мне нужно добавить ребенка, чтобы он выглядел так:
parent: [
{
name: 'My name',
age: 32,
child: [
{
name: 'My children',
school: 'Elementary'
}
]
}
]
И я пытаюсь сделать это так:
addChildren: function (index) {
this.form.parent.splice([index], 0, {
child: {
name: '',
school: '',
}
});
},
И по какой-то причине это не работает, это добавление нового массива родительского и дочернего объекта.
И это другой способ, которым я пытался это сделать:
addChildrenSecoundTry: function (index) {
var dd = [];
dd[index] = {
child: {
name: '',
school: '',
}
};
this.form.packages.splice([index], 0, dd);
},
Но безуспешно.
Я пробовал использовать push, передавая ключ от родителя, но это всегда приводит к ошибке, что push не является функцией.
Вот пример КОДА, который я привел, чтобы прояснить свое видение.
Ответ №1:
Попробуйте распространить оригинальные ключи на новые ( child
) по заданному индексу
addChildren: function (index) {
this.form.parent.splice(index, 1, {
...this.form.parent[index],
child: {
name: '',
school: '',
}
});
},
Ответ №2:
Вы можете напрямую добавить массив/объект в родительский объект. Я использовал троичный ключ, чтобы проверить, существует ли «дочерний» ключ, и если да, подтолкните объект к нему, иначе создайте новый ключ с объектом внутри массива.
addChildren: function (index) { this.form.parent[index].child =
this.form.parent[index].child ? this.form.parent[index].child.push({name: '',
school: '',}) : [ {name: '', school: '',} ], } }); },