Рассмотрим следующую функцию в службе:Angular.copy() не копирует все свойства
$scope.addPeriod = function(newPeriod) {
if(newPeriod.from !== '' && newPeriod.until !== '') {
var index = $scope.newPeriods.indexOf(newPeriod);
$scope.newPeriods.splice(index, 1);
$scope.setHolidayEditions(newPeriod);
console.log("Check period");
console.log(newPeriod); // state 1: object newPeriod is as expected, it contains holidayEdtions
console.log("Check period copy");
console.log(angular.copy(newPeriod)); //state 2 : object newPeriod is missing the holidayeditions!
$scope.periods.push(angular.copy(newPeriod)); //original code
//some more logic irrelevant to the question
}
}
Проблема заключается в angular.copy(). Структура объекта newPeriod выглядит следующим образом:
имеет дату «от» и «до» и массив предметов журнала. Тогда есть функция $ scope.setHolidayEditions (newPeriod). В основном это добавляет массив экземпляров для каждого журнала. Эта функция работает. Я знаю это из-за вывода на консоль. В исходном коде период затем начинается в массив периодов, который затем отображается на экране. Угловой.copy() был сделан, вероятно, для того, чтобы избежать справочных проблем.
Но угловое копирование(), похоже, не копирует вновь созданный массив изданий в объектах журнала. Для этого есть причина?
В основном это то, что происходит в сервисной функции:
У меня есть объект с именем newPeriod, который выглядит примерно так:
{
from:"02/10/2015",
until:"09/10/2015",
magazines: [
{title:"some title", number:"some number", code:"magazineCode"},
{title:"other title", number:"other number", code:"magazineCode2"}
]
}
после функции $ scope.setHolidayEditions (newPeriod) объект выглядит следующим образом:
{
from:"02/10/2015",
until:"09/10/2015",
magazines: [
{title:"some title", number:"some number", code:"magazineCode", holidayEditions:["date","date","date"]},
{title:"other title", number:"other number", code:"magazineCode2", holidayEditions:["date","date","date"]}
]
}
Но после angular.copy (newPeriod), объект выглядит следующим образом снова:
{
from:"02/10/2015",
until:"09/10/2015",
magazines: [
{title:"some title", number:"some number", code:"magazineCode"},
{title:"other title", number:"other number", code:"magazineCode2"}
]
}
Угловой.copy() не копировал массив праздничных данных из журналов. И мне интересно, почему?
предоставьте больше условий. –
Ничего неправильного в показанном коде, который бы представлял такую проблему. Создайте демоверсию, которая повторяет этот – charlietfl
Мне придется делать это дома, так как я должен продолжать работать над своим спринтом. Я не могу просто скопировать код компании для очевидных советов :-). –