以angular度深度复制对象?
我想知道是否有避免复制对象的引用,当你需要创build一个embedded对象数组的简单对象。情况如下:我有服务器接受JSON和应用一些逻辑,然后存储对象D B。 可以说我的表单是用DB保存团队的。 服务器接受团队为json。 该团队有一个TeamMember对象的数组,我的表单有一个简单的字段来input团队成员信息,并将其添加到团队teamMembers数组。 现在是这样的问题,当我将一个团队成员添加到数组列表中,并且想要添加另一个团队成员时,当我在该字段中input时,添加的成员也被更改! 我知道原因
$scope.addTeamMember=function(teamMember){ $scope.team.teamMembers.push(teamMember); }
这是因为我把相同的引用到teamMembers数组中,所以我有几次添加了相同的对象。 为了避免这种情况,我应该创build一个新的团队成员对象,复制所有teamMember属性,并将其添加到数组中。
$scope.addTeamMember=function(teamMember){ var newTeamMember; /*<--- copy teamMember */ $scope.team.teamMembers.push(newTeamMember); /*and add newTeamMember*/ }
你的问题说你想“避免深层复制”,但我不确定这是否准确。 这听起来像你只是想使用angular.copy ,因为你需要创build一个团队成员的副本,并将其添加到数组:
$scope.addTeamMember = function(teamMember) { var newTeamMember = angular.copy(teamMember); $scope.team.teamMembers.push(newTeamMember); };
我个人使用这个:
function copyObjToObj(source, destination) { if(!angular.equals(source,destination)){ if (!!destination) angular.copy(source, destination); else destination = angular.copy(source); } return destination; } var destination = copyObjToObj(sourceObj, destination);