一尘不染

如何在Angular中使用$ rootScope存储变量?

angularjs

如何$rootScope在以后要在另一个控制器中访问的控制器中存储变量?例如:

angular.module('myApp').controller('myCtrl', function($scope) {
  var a = //something in the scope
  //put it in the root scope
});

angular.module('myApp').controller('myCtrl2', function($scope) {
  var b = //get var a from root scope somehow
  //use var b
});

我该怎么做?


阅读 334

收藏
2020-07-04

共1个答案

一尘不染

在根范围内设置的变量可通过原型继承供控制器范围使用。

这是@Nitish演示的修改后的版本,它更加清楚地显示了这种关系:http :
//jsfiddle.net/TmPk5/6/

注意,在模块初始化时设置了rootScope的变量,然后每个继承的作用域都有自己的副本,可以独立设置(该change函数)。另外,rootScope的值也可以更新(中的changeRs函数myCtrl2

angular.module('myApp', [])
.run(function($rootScope) {
    $rootScope.test = new Date();
})
.controller('myCtrl', function($scope, $rootScope) {
  $scope.change = function() {
        $scope.test = new Date();
    };

    $scope.getOrig = function() {
        return $rootScope.test;
    };
})
.controller('myCtrl2', function($scope, $rootScope) {
    $scope.change = function() {
        $scope.test = new Date();
    };

    $scope.changeRs = function() {
        $rootScope.test = new Date();
    };

    $scope.getOrig = function() {
        return $rootScope.test;
    };
});
2020-07-04