1. ホーム
  2. angularjs

[解決済み] Angularで$rootScopeを使用して変数を格納するにはどうすればよいですか?

2022-04-08 07:45:45

質問

を使用するにはどうすればよいのでしょうか? $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
});

どうすればいいのでしょうか?

どのように解決するのですか?

ルートスコープに設定された変数は、プロトタイプ継承によりコントローラスコープで利用可能です。

以下は、@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;
    };
});