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

时间:2013-12-30 09:51:44

标签: javascript angularjs

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

如果我在代码中设置属性但是如果我复制了对象,那么我能够正确地共享数据,那么它似乎无法正常工作。

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

您会看到虽然UserFirstCtrl SecondCtrl对象的值可以在OriginalUser中访问,但FirstCtrl的数据只能在{{1}}中访问}。

您可以在Code Sample at JSFiddle

查看代码

1 个答案:

答案 0 :(得分:1)

这是因为你没有更新OriginalUser数据,而是使用angular.copy函数创建一个新变量。

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

你的第一个控制者:

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

你的小提琴是最新的。