如何在整个角度JS应用程序上观看$ rootScope

时间:2016-09-14 15:26:07

标签: javascript angularjs

我使用的是angular 1.5.6,我的应用程序由几个模块组成,每个模块都有自己的视图和控制器。我的问题是如何在每个控制器上观看$ rootScope。我需要在所有控制器上观看$ rootScope,因为我在$ rootScope.account上有一个全局变量,当用户刷新页面时,$ rootScope.account被清除,我的所有应用程序都崩溃了。我想在我的所有模块上观看$ rootScope.account,所以当用户刷新时我可以处理刷新并重定向到登录页面。我想可能是我会在我的每个模块上注入的服务?

1 个答案:

答案 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();
        }

        //...
    }
]);