AngularJS:$ rootscope和$ scope绑定问题

时间:2015-03-06 16:16:31

标签: angularjs

这是我的控制器。

angular.module('xyz').controller('MyController', function($scope, $rootScope) {
    $scope.myVar = 123;
    $rootScope.myVar = $scope.myVar;
});

现在的问题是,出于某种原因,我还必须在$ rootScope中保存相同的值。但在保存此值后,如果用户更新视图中的值,则值将在$ scope中更新。但由于绑定$ rootScope优先,因此角度更新$scope.myVar的值与$rootScope.myVar中的内容。

是否存在不在这两个变量之间创建引用的方法。

1 个答案:

答案 0 :(得分:2)

如果它是一个基本类型,如数字/字符串/布尔/等...它不会成为一个引用(你的例子就是这种类型)。如果它是一个对象/函数/数组/等..它将是。因此要破坏参考,您需要使用angular.copy:

$rootScope.myVar = angular.copy($scope.myVar);

参考:

angular.module('xyz').controller('MyController', function($scope, $rootScope) {
    $scope.myVar = 123;
    $rootScope.myVar = $scope.myVar; //won't be a reference
});

angular.module('xyz').controller('MyController', function($scope, $rootScope) {
    $scope.myVar = { data: 123 };
    $rootScope.myVar = $scope.myVar; //will be a reference
    $rootScope.myVar = { data: $scope.myVar.data }; //won't be a reference
});