首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在angular中深度复制对象?

在angular中深度复制对象?
EN

Stack Overflow用户
提问于 2013-01-16 22:15:17
回答 3查看 100K关注 0票数 51

我想知道当你需要创建一个简单的对象时,有没有办法避免复制对对象的引用,这个对象有一个嵌入了objects.The数组的情况是这样的:我有一个服务器,它接受一个JSON并应用一些逻辑,然后将对象存储在DB中。假设我的表单用于在DB中保存团队。服务器接受team作为json。团队有一个TeamMember对象数组,我的表单有一个简单的字段,用于输入团队成员信息并将其添加到team teamMembers数组中。现在的问题是,当我将一个团队成员添加到数组列表中,并且想要添加另一个团队成员时,当我在字段中键入内容时,添加的成员也被更改了!我知道原因

代码语言:javascript
复制
$scope.addTeamMember=function(teamMember){
   $scope.team.teamMembers.push(teamMember);
}

这是因为我将相同的引用放到了teamMembers数组中,所以我多次添加了相同的对象。为了避免这种情况,我应该创建一个新的团队成员对象,复制所有teamMember属性并将其添加到数组中。

代码语言:javascript
复制
 $scope.addTeamMember=function(teamMember){
       var newTeamMember; /*<--- copy teamMember */
       $scope.team.teamMembers.push(newTeamMember); /*and add newTeamMember*/
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-16 22:21:21

你的问题说你想“避免深度复制”,但我不确定这是不是准确的。听起来您只是想使用angular.copy,因为您需要创建团队成员的副本并将其添加到数组中:

代码语言:javascript
复制
$scope.addTeamMember = function(teamMember) {
   var newTeamMember = angular.copy(teamMember);
   $scope.team.teamMembers.push(newTeamMember);
};
票数 116
EN

Stack Overflow用户

发布于 2015-07-08 15:31:16

这是目前最好的文档

https://docs.angularjs.org/api/ng/function/angular.copy

在页面上也有一个活生生的例子,这是自我说明的。

票数 6
EN

Stack Overflow用户

发布于 2016-03-19 14:55:21

我个人使用的是:

代码语言:javascript
复制
    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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14360401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档