Синтаксис для расширения поставщика маршрутов AngularJS - PullRequest
0 голосов
/ 30 мая 2019

Надеюсь, этот вопрос не будет ошибочно помечен как дубликат.

Я пытаюсь расширить AngularJS $routeProvider, как это предлагается в качестве ответа на предыдущий вопрос.К сожалению, это не работает, и у меня может быть неправильный синтаксис.

Вот обеззараженная версия моего модуля «верхнего уровня»:

// app.js
angular.module('app', ['ngRoute', 'ngSanitize'
        , 'main'
    ])

    .provider('appRoute', ['$routeProvider', function($routeProvider) {

        this.$get = function($http) {
            console.log("Instantiaing $rmaRouteProvider");
            var universalResolves = {authorize: function($http) {
                    return $http.get('/svc/authorize/view?urlPath=' + path)
                        .then(function(response) {
                            var data = response.data;
                            if (response.data.result === 'NOT_AUTHORIZED') {
                                throw "NOT_AUTHORIZED";
                            }

                            console.log("finished authorized()");
                            return data;
                        });
                }
            };

            var rmaRouteProvider = angular.extend({}, $routeProvider, {
                when: function(path, route) {
                    route.resolve = (route.resolve) ? route.resolve : {};
                    angular.extend(route.resolve, universalResolves);
                    $routeProvider.when(path, route);
                    return this;
                }
            });

            return rmaRouteProvider;
        }
    }]);

Вот мой main.jsгде я пытаюсь определить маршруты, используя appRoute провайдера вместо $routeProvider:

angular.module('admin', ['ngRoute', 'ngSanitize', 'ngCsv'])
.config(['appRouteProvider', function(appRouteProvider) {
       appRouteProvider.when('/route', {

            templateUrl: 'pageTemplate.tmpl.html',
            controller: 'pageCtrl'

       }
]);

К сожалению, я получаю следующую ошибку:

Error: [$injector:modulerr] Failed to instantiate module app due to:
[$injector:modulerr] Failed to instantiate module main due to:
[$injector:unpr] Unknown provider: appRouteProvider
http://errors.angularjs.org/1.5.8/$injector/unpr?p0=%24appRouteProvider
minErr/<@https://localhost:8443/js/angular/angular.js:68:12
createInjector/providerCache.$injector<@https://localhost:8443/js/angular/angular.js:4511:19
getService@https://localhost:8443/js/angular/angular.js:4664:39
injectionArgs@https://localhost:8443/js/angular/angular.js:4688:58
invoke@https://localhost:8443/js/angular/angular.js:4710:18
runInvokeQueue@https://localhost:8443/js/angular/angular.js:4611:11
loadModules/<@https://localhost:8443/js/angular/angular.js:4620:11
forEach@https://localhost:8443/js/angular/angular.js:321:11
loadModules@https://localhost:8443/js/angular/angular.js:4601:5
loadModules/<@https://localhost:8443/js/angular/angular.js:4618:40
forEach@http…

Как я уже говорилЯ надеюсь, что это ошибка моего синтаксиса.

Редактировать: Я понимаю, что провайдеры провайдеров зависят от порядка загрузки.App.js - это первый <script>, импортированный в файл index.html приложения, который должен быть загружен первым.

Редактировать 2: я обновил этот вопрос до следующего: Пользователь нестандартного маршрута, когдане функция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...