Рассмотрим следующий вложенный объект, который циклически повторяется 10 раз для создания объекта с расписаниями на 10 недель для каждого понедельника в указанное время:
$rootScope.bookings_times_list = [];
for (i = 0; i < 10; i++) {
$rootScope.bookings_times_list.push({
week: i,
schedule: [{
booking_day: "Monday",
booking_times: [{
"booking_start_time": "00:15",
"booking_end_time": "01:00",
"booking_selected": "",
"booking_selected_date": "",
"booking_time": "30 Nov 2019 07:35hrs"
}]
}]
});
}
Проблема состоит в том, что значение booking_selected
изменяется на1
, как показано ниже, изменяет значения для всех booking_selected
клавиш для каждой недели на 1
:
$rootScope.bookings_times_list[0].schedule[0].booking_times[0].booking_selected = 1;
Почему это происходит, когда клавиша для $rootScope.bookings_times_list[0]
четко установлено 0
только для первой недели?
==== ОБНОВЛЕНИЕ ====
Фактический код начинается с пустого времени бронирования, например:
$rootScope.bookings_times_list = [];
for (i = 0; i < 10; i++) {
$rootScope.bookings_times_list.push({
week: i,
schedule: [{
booking_day: "Monday",
booking_times: []
}]
});
}
Затем следует еще один цикл for
, который объединяет понедельник и добавляет фактическое расписание, доступное из бронирования:
for (a = 0; a < $rootScope.bookings_times_list.length; a++) {
for (y = 0; y < $rootScope.bookings_times_list[a].schedule.length; y++) {
if($rootScope.business_bookings[$rootScope.bookings_index].booking_times[y]){
var index = $rootScope.bookings_times_list[a].schedule.findIndex(x => x.booking_day === $rootScope.business_bookings[$rootScope.bookings_index].booking_times[y].booking_day);
if(index >= 0){
$rootScope.bookings_times_list[a].schedule.splice(index, 1, $rootScope.business_bookings[$rootScope.bookings_index].booking_times[y]);
}
}
}
}
Похоже, что второй цикл for
является причиной проблемы. Влияет ли сплайсинг на инициализацию объекта?
=== ОБНОВЛЕНИЕ ===
Я также только что заметил, что проблема не в соединении. Потому что изменение с
$rootScope.bookings_times_list[a].schedule.splice(index, 1, $rootScope.business_directory_records[$rootScope.index].business_bookings[$rootScope.bookings_index].booking_times[y]);
на
$rootScope.bookings_times_list[a].schedule[index] = $rootScope.business_directory_records[$rootScope.index].business_bookings[$rootScope.bookings_index].booking_times[y]
во втором цикле for по-прежнему вызывает ту же проблему.