Angular Ввести $http в конфигурацию или провайдер в запуск
Я использую angular-route-сегмента в моем угловом приложении и пытаюсь настроить сегменты из канала json.
У меня проблемы с этим, потому что я не могу понять, как вводить $http
в app.config
функция. Это не с Unknown provider: $http
myApp.config(["$http", "$routeSegmentProvider", function ($http, $routeSegmentProvider) {
/* setup navigation here calling $routeSegmentProvider.when a number of times */
}
Таким образом, вместо введения $ http в config
Я тоже пробовал вводить $routeSegmentProvider
в myApp.run
myApp.run(["$http", "$routeSegment", function($http, $routeSegment) {
/* can use $http here to get data, but $routeSegment is not the same here */
/* $routeSegment does not have the when setup method */
}]);
Я тоже пробовал
myApp.run(["$http", "$routeSegmentProvider", function($http, $routeSegmentProvider)
но я получаю Unknown provider: $routeSegmentProviderProvider <- $routeSegmentProvider
1 ответ
Поставщики могут быть введены только в фазе "config", а не в фазе "run". И наоборот, такая служба, как $ http, еще не была инициализирована на этапе "config" и будет доступна только на этапе "run".
Небольшой трюк, чтобы обойти это, - определить переменную в области родительской функции, чтобы к ней могли иметь доступ как блоки config, так и run:
var routeSegmentProvider = null;
myApp.config(["$routeSegmentProvider", function ($routeSegmentProvider) {
routeSegmentProvider = $routeSegmentProvider;
}]);
myApp.run(["$http", function($http) {
// access $http and routeSegmentProvider here
}]);
Я не уверен, что у вас возникнут проблемы при попытке вызова $routeSegmentProvider.setup() на этапе выполнения, поскольку я не пробовал. В прошлом я мог использовать ту же технику для регистрации перехватчиков ответа http, которые зависят от некоторых пользовательских сервисов, с $httpProvider.