基于角色角度的不同模板URL

时间:2015-12-09 19:18:01

标签: javascript angularjs angularjs-service angularjs-routing angularjs-provider

我的路线配置如下:

.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。那么可能的方法是什么?

1 个答案:

答案 0 :(得分:1)

基本上问题是你不能将service/factory注入角配置阶段。您需要创建提供者而不是服务/工厂。因为提供者可以在Angular的配置阶段访问。

<强> 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";
            }
        }
    };
});