Надеюсь, этот вопрос не будет ошибочно помечен как дубликат.
Я пытаюсь расширить 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: я обновил этот вопрос до следующего: Пользователь нестандартного маршрута, когдане функция