Zastanawiam się, czy jest tam daleko, aby uniknąć kopiowania odniesień do obiektów, gdy trzeba utworzyć prosty obiekt, który ma tablicę osadzonych obiektów. Sytuacja wygląda następująco: mam serwer, który akceptuje JSON i stosuje jakąś logikę, a następnie przechowuje obiekt w DB. powiedzmy, że mój formularz służy do zapisywania zespołów w DB. Serwer akceptuje zespół jako json. zespół ma tablicę obiektów TeamMember, moja forma ma proste pole do wpisania informacji o członkach zespołu i dodania go do tablicy teamMembers zespołu. Teraz jest problem, kiedy dodaję członka zespołu do listy tablic i chcę dodać kolejnego członka zespołu, kiedy wpisuję w pole, zmienia się także dodany członek! Wiem PowodemObiekty głęboko kopiujące w kanciastym?
$scope.addTeamMember=function(teamMember){
$scope.team.teamMembers.push(teamMember);
}
a to dlatego, że sam umieścić odniesienie do tablicy teamMembers więc muszę sam obiekt dodaje kilka razy. Aby tego uniknąć, powinienem utworzyć nowy obiekt członkowski zespołu, skopiować wszystkie właściwości teamMember i dodać tablicę.
dlaczego nie wystarczy wcisnąć pracy w grupie? dlaczego zrobić kopię – landed
Ponieważ obiekty JavaScript są przekazywane przez odniesienie, jeśli jeden z nich przesunął element teamMember do tablicy i ewentualnie zmodyfikował go, wówczas oryginalny obiekt również zostałby zmodyfikowany. 'var animal = {Name: 'dog'};' następnie dodamy go do tablicy dwa razy. 'var tablica = []; array.push (zwierzę); array.push (animal); 'następnie zmodyfikowaliśmy drugie zwierzę w tablicy. 'tablica [1] .Name = 'cat';' Teraz wszystkie zwierzęta są nazywane 'cat'. 'console.log (animal.Name); console.log (array [0]; 'Dane wyjściowe: 'cat' dla obu: –