Javascript AngularJS跨控制器共享复制的对象

Javascript AngularJS跨控制器共享复制的对象,javascript,angularjs,Javascript,Angularjs,在我的AngularJS项目中,我无法在不同控制器之间共享复制对象的数据 如果我在代码中设置了属性,我可以正确地共享数据,但是如果我复制了对象,那么它似乎不起作用 在的代码块中,您将看到我有两个对象User和OriginalUser。 加载FirstCtrl后,我将User对象复制到OriginalUser对象 您将看到,FirstCtrl中分配给User对象的值可以在SecondCtrl中访问,但是OriginalUser的数据只能在FirstCtrl中访问 您可以在处看到正在运行的代码,这是

在我的AngularJS项目中,我无法在不同控制器之间共享复制对象的数据

如果我在代码中设置了属性,我可以正确地共享数据,但是如果我复制了对象,那么它似乎不起作用

在的代码块中,您将看到我有两个对象
User
OriginalUser
。 加载
FirstCtrl
后,我将
User
对象复制到
OriginalUser
对象

您将看到,
FirstCtrl
中分配给
User
对象的值可以在
SecondCtrl
中访问,但是
OriginalUser
的数据只能在
FirstCtrl
中访问


您可以在

处看到正在运行的代码,这是因为您没有更新原始用户数据,而是使用angular.copy函数创建了一个新变量

您要查找的是angular.extend,它将用户属性复制到原始用户。现在,两个控制器使用相同的对象实例

您的第一个控制器:

function FirstCtrl($scope,User, OriginalUser){
    $scope.user = User;
    $scope.o_user = angular.extend(OriginalUser, $scope.user);
}

您的fiddle是最新的。

首先将rootdata注入第一个控制器,然后将对象复制到其中。那么它将可用于其他控制器。@saidomar什么是“rootdata”?对不起,我是说rootscope…我明白了。顺便说一句,使用$rootScope共享数据是一种不好的做法(类似于全局名称空间污染)。感谢您的及时回答,这很有效。6分钟的时限一过,我就接受这个答案。