【问题标题】:Is it possible to define a resolve object and make it available in all routes?是否可以定义一个解析对象并使其在所有路由中可用?
【发布时间】:2013-07-03 08:56:03
【问题描述】:

我有一个用户可以访问应用程序的不同部分。我现在正在做的是为每个 $routeProvider.when 添加一个解析

resolve : {
            adminUser: securityAuthorizationProvider.requireAuthenticatedUser,
            hasSiteAccess: securityAuthorizationProvider.requireSiteAccess,
            hasEmailAccess: securityAuthorizationProvider.requireEmailAccess
        }

我在每个控制器中添加“hasSiteAccess”和“hasEmailAccess”,如下所示:

.controller('setup', ['$scope','hasSiteAccess','hasEmailAccess', function ($scope,  hasSiteAccess, hasEmailAccess) {

我的应用被分解成许多模块,我想让这些模块全部可用以显示友好的消息。

是否可以让这个解析对象在所有路由和控制器中都可用?

谢谢!

【问题讨论】:

    标签: javascript angularjs angularjs-routing


    【解决方案1】:

    只需在每次路由更改前通过$routeChangeStart事件申请授权提供者:

    .run(['$rootScope', 'securityAuthorization',
        function($rootScope, securityAuthorization) {
    
            $rootScope.$on('$routeChangeStart', function(next, current) {
                securityAuthorization.requireAuthenticatedUser();
                securityAuthorization.requireSiteAccess();
                securityAuthorization.requireEmailAccess();
            });
        }
    ])
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2017-11-18
      • 1970-01-01
      • 2020-05-19
      • 2019-10-15
      • 2011-09-06
      • 2012-07-24
      • 2014-02-13
      • 2011-12-15
      相关资源
      最近更新 更多