У меня сложная форма с разными вкладками. Я использую vue-router
для переключения между ними и отображения различных модульных компонентов в router-view
для каждого из них. На этих вкладках у меня есть дочерние компоненты с иногда другими вложенными дочерними компонентами. Я использую event bus
подход для передачи данных из этих дочерних компонентов в дерево. Я делаю это, потому что последняя вкладка будет сводкой формы, и мне понадобится доступ ко всем данным формы. На данный момент я использую что-то вроде ниже.
Например, используя эту структуру:
|App
--|Start
--|Question 1
--|Answer 1
--|Answer 2
--|Question 2
...
В корневом компоненте (приложение):
data() {
return {
questions: 0,
answers: []
}
},
created() {
eventBus.$on('answer-added', answer => {
let answer_exists = false
this.answers.forEach( (e, i) => {
if(e.id == answer.answer_id) answer_exists = true
});
if(!answer_exists) this.answers.push({
id: answer.answer_id,
answer: answer.answer_text
})
});
}
Как правильно создавать / обновлять / удалять массив ответов в компоненте приложения каждый раз, когда происходит событие от дочернего элемента?
Я уверен, что должен быть намного лучший способ, чем перебирать элементы массива, чтобы проверить, существует ли уже ответ или нет ... Просто не могу понять это.