繁体   English   中英

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

[英]How to watch $rootScope on entire angular JS application

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

您可以通过两种简单的方法来实现。

首先:将$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();
        }

        //...
    }
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM