我想知道当你需要创建一个简单的对象时,有没有办法避免复制对对象的引用,这个对象有一个嵌入了objects.The数组的情况是这样的:我有一个服务器,它接受一个JSON并应用一些逻辑,然后将对象存储在DB中。假设我的表单用于在DB中保存团队。服务器接受team作为json。团队有一个TeamMember对象数组,我的表单有一个简单的字段,用于输入团队成员信息并将其添加到team 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*/
}
发布于 2013-01-16 22:21:21
你的问题说你想“避免深度复制”,但我不确定这是不是准确的。听起来您只是想使用angular.copy,因为您需要创建团队成员的副本并将其添加到数组中:
$scope.addTeamMember = function(teamMember) {
var newTeamMember = angular.copy(teamMember);
$scope.team.teamMembers.push(newTeamMember);
};
发布于 2015-07-08 15:31:16
发布于 2016-03-19 14:55:21
我个人使用的是:
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);
https://stackoverflow.com/questions/14360401
复制相似问题