我使用的是angular 1.5.6,我的应用程序由几个模块组成,每个模块都有自己的视图和控制器。我的问题是如何在每个控制器上观看$ rootScope。我需要在所有控制器上观看$ rootScope,因为我在$ rootScope.account上有一个全局变量,当用户刷新页面时,$ rootScope.account被清除,我的所有应用程序都崩溃了。我想在我的所有模块上观看$ rootScope.account,所以当用户刷新时我可以处理刷新并重定向到登录页面。我想可能是我会在我的每个模块上注入的服务?
答案 0 :(得分:0)
你可以用两种简单的方式来做。
首先:将$rootScope
包含在您的控制器中:
app.controller('MyCtrl', [
'$rootScope',
'$scope',
function($rootScope, $scope) {
$rootScope.$watch('myvar', function(newValue, oldValue) {
doSomething();
}
//...
}
]);
二。如果您在其他范围中没有具有相同名称的变量,则可以避免使用$rootScope
并仅使用$scope
。这将有效,因为每个$scope
都是从$rootScope
继承的。
app.controller('MyCtrl', [
'$scope',
function($scope) {
$scope.$watch('myvar', function(newValue, oldValue) {
doSomething();
}
//...
}
]);