СУШКА параметра разрешения в $routeProvider

Каков "угловой" способ СУШКИ параметра разрешения для путей "/A" и "/B"? В моем $routeProvider я вызываю точно такую ​​же функцию разрешения для этих сценариев и не знаю лучшего способа избежать дублирования кода в среде AngularJS.

var app = angular.module("myProject", []);

app.config(["$routeProvider",function($routeProvider) {
    $routeProvider.
        when("/A", {
            templateUrl: "templates/A.html",
            controller: "AController",
            resolve: {
                tokenRefresh: function(serviceA, serviceB){
                    if (serviceA.refreshingToken() == true)
                    {
                        return(serviceB.refresh());
                    }   
                }
            }
        }).   
        when("/B", {
            templateUrl: "templates/B.html",
            controller: "BController",          
            resolve: {
                tokenRefresh: function(serviceA, serviceB){
                    if (serviceA.refreshingToken() == true)
                    {
                        return(serviceB.refresh());
                    }   
                }
            }
        }).
        otherwise({ 
            redirectTo: '/' 
        });
    }
]};

1 ответ

Решение

resolve в вашем случае это просто объект JSON. Почему бы не объявить об этом один раз перед вашим звонком $routeProvider?

var resolver = {
    tokenRefresh: function(serviceA, serviceB){
        if (serviceA.refreshingToken() == true)
        {
            return(serviceB.refresh());
        }   
    }
};

$routeProvider.
when("/A", {
    templateUrl: "templates/A.html",
    controller: "AController",
    resolve: resolver
}).   
when("/B", {
    templateUrl: "templates/B.html",
    controller: "BController",          
    resolve: resolver
}).
otherwise({ 
    redirectTo: '/' 
});
Другие вопросы по тегам