AngularJS:$rootscope和$scope绑定问题



这是我的控制器。

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

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

有没有办法在这两个变量之间不创建引用。

如果它是一个基元类型,如数字/字符串/布尔值/等......它不会是一个引用(你的示例是这个类型)。如果是对象/函数/数组/等。会的。因此,要销毁引用,您可以使用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
});

最新更新