Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于角色的不同模板url_Javascript_Angularjs_Angularjs Service_Angularjs Routing_Angularjs Provider - Fatal编程技术网

Javascript 基于角色的不同模板url

Javascript 基于角色的不同模板url,javascript,angularjs,angularjs-service,angularjs-routing,angularjs-provider,Javascript,Angularjs,Angularjs Service,Angularjs Routing,Angularjs Provider,我有如下路由配置: .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/home', { templateUrl: 'partials/home.html', controller

我有如下路由配置:

.config(['$routeProvider',
            function ($routeProvider) {
                $routeProvider
                        .when('/home', {
                            templateUrl: 'partials/home.html',
                            controller: 'HomeCtrl'
                        })
}]);
现在我想根据用户的授权确定不同的登录模板。我已授权在会话中定义服务。我希望能够做到以下几点:

 .config(['$routeProvider', 'Session'
                function ($routeProvider, Session) {
                    $routeProvider
                            .when('/home', {
                                templateUrl: Session.getState().authorized?'partials/authHome.html':'partials/home.html',
                                controller: 'HomeCtrl'
                            })
    }]);

但我不能以这种方式使用配置中的会话。那么,有什么可能做到这一点呢?

基本上,问题是您不能将
服务/工厂
注入到配置阶段。您需要创建一个提供者,而不是服务/工厂。因为提供程序在配置阶段具有访问权限

Session.js

app.provider('Session', function() {
    this.getState = function(){
        var object;
        //fill up object value.
        return object; //object will have your desired format with authorised prop
    }

    this.$get = function() {
        return {
            myMethod: function() {
                return "Something";
            }
        }
    };
});

getState()
是异步调用吗?getState只是我的应用程序和Session.getState()中Session.js文件中的一个函数。authorized只返回true/false