如何使用$ 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的变量被设置,然后每个继承的范围获得自己的可以独立设置的副本(变化函数)。此外,rootScope的值也可以更新(myCtrl2中的changeRs函数)
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',$rootScope) { $scope.change = function() { $scope.test = new Date(); }; $scope.changeRs = function() { $rootScope.test = new Date(); }; $scope.getOrig = function() { return $rootScope.test; }; });