Доброго времени суток, прошу оказать содействие в решении проблемы по автоматическому связываю двух свойств.
Есть два компонента (основной и дочерний). В основном имеются два одинаковых массива объектов (использую для сравнения наличия изменений):
componentListWorksItems: [],
componentListWorksItemsForComparison: [],
Далее по каждому объекту из первого массива (componentListWorksItems) генерирую дочерний компонент:
<tr v-for="(itemWork, indexWork) in componentListWorksItems" :key="indexWork">
<td>
<work-item-component v-model="componentListWorksItems[indexWork]"
@onUpdateEquipmentQuantityByMonth="handlerUpdateEquipmentQuantityByMonth(indexWork, $event)"
@onChangingTotalsEquipmentItems="handlerOnChangingTotalsEquipmentItems(indexWork, $event)"
@onSaveWorkItemInDatabase="handlerOnSaveWorkItemInDatabase(true, $event)"
:comparison-list-item="componentListWorksItemsForComparison[indexWork]['pivot']"
:index="indexWork"
/>
</td>
</tr>
Связывание изменений в дочернем компоненте с единицей первого массива основного компонента провожу следующим образом:
handlerOnChangingTotalsEquipmentItems(workItemIndex, {newSumEquipment, yearLaborCost}) {
this.$set(this.componentListWorksItems[workItemIndex]['pivot'], 'year_estimated_quantity', newSumEquipment);
this.$set(this.componentListWorksItems[workItemIndex]['pivot'], 'year_labor_cost', yearLaborCost);
}
Проверка для сравнения изменений в дочернем компоненте проводится следующим образом:
computed: {
isChanged: function () {
return JSON.stringify(this.value['pivot']) !== JSON.stringify(this.comparisonListItem);
}
До сохранения данных на сервер все работает как положено
Сохраняю данные на сервер получаю результат (единицу объекта для вставки в массив)
Делаю вставку свежей записи в оба массива с сохранением реактивности:
updateSingleWorkItemInLocalListFromDatabase(workItemIndex, workItemData) {
this.$set(this.componentListWorksItems[workItemIndex], 'pivot', workItemData);
this.$set(this.componentListWorksItemsForComparison[workItemIndex], 'pivot', workItemData);
}
После этой манипуляции начинается проблема:
При изменение данных в дочернем компоненте вместе с единицей из первого массива (componentListWorksItems) изменяется и аналогичная единица во втором массиве (componentListWorksItemsForComparison)