我想知道是否需要避免在创建一个带有嵌入式对象数组的简单对象时复制对对象的引用。情况如下:我有一个接受JSON并应用一些逻辑然后将对象存储在其中的服务器D B。可以说,我的表单用于保存DB中的团队。服务器接受team作为json。团队有一个TeamMember对象数组,我的表单有一个简单的字段来输入团队成员信息并将其添加到团队teamMembers数组中。现在这是一个问题,当我向数组列表中添加一个团队成员并且想要在我在字段中键入内容时添加另一个团队成员时,添加的成员也会更改!我知道原因
$scope.addTeamMember=function(teamMember){ $scope.team.teamMembers.push(teamMember); }
这是因为我将相同的引用放入teamMembers数组中,所以我多次添加了相同的对象。为避免这种情况,我应该创建一个新的团队成员对象,复制所有teamMember属性,并将其添加到数组中。
$scope.addTeamMember=function(teamMember){ var newTeamMember; /*<--- copy teamMember */ $scope.team.teamMembers.push(newTeamMember); /*and add newTeamMember*/ }
您的问题是您要“避免深层复制”,但我不确定那是正确的。听起来您只想使用angular.copy,因为您需要创建团队成员的副本并将其添加到数组中:
$scope.addTeamMember = function(teamMember) { var newTeamMember = angular.copy(teamMember); $scope.team.teamMembers.push(newTeamMember); };