2015-04-27 222 views
6

不更新它,我有这样的事情:角 - 范围值保存到变量,但在范围更新

$scope.last_good_configuration = $scope.storage; 

在$ scope.last_good_configuration我把最后一个良好的设置。

当输入错误的值用户类型,例如过大的整数我想要做的:

$scope.storage = $scope.last_good_configuration; 

但我的$ scope.last_good_configuration是所有的时间与$ scope.storage。如何停止更新$ scope.last_good_configuration?我必须以某种方式评估我的范围?

+0

我们缺少信息来帮助您... – n00dl3

回答

5

你需要让原始对象的副本或克隆。 Angular有一个内置的方法:angular.copy

$scope.last_good_configuration = angular.copy($scope.storage); 


//Edits must be at least 6 characters workaround 
2

因为对象是通过引用传递,你需要创建一个新对象在店内的默认配置。否则,当你修改$scope.last_good_configuration它也影响$scope.storage,因为它们都指向同一个对象。

使用angular.extend方法,将所有属性从$scope.storage复制到新的对象{}

$scope.last_good_configuration = angular.extend({}, $scope.storage); 

UPD。我完全忘记了专用angular.copy这可能更适合在这种情况下,尤其是$scope.storage有嵌套的对象结构:angualar.extend会做一个浅拷贝,在这种情况下,你应该使用angular.copy(见Satpal答案)。

4

您可以使用angular.copy()一个新的对象,所以当您更改storage也不会影响last_good_configuration

$scope.last_good_configuration = angular.copy($scope.storage);