Как узнать, какие зависимости я могу ввести в контроллер?
Я пытаюсь использовать $routeProvider
зависимость внутри моего контроллера:
.controller('mainController', function($scope, $state, $routeProvider) {
Но я получаю ошибку:
Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider
Как мне узнать, какие зависимости я могу ввести в любой данный контроллер?
2 ответа
Есть две фазы внутри угловой
- Фаза конфигурации (здесь мы используем
app.config
написать код) - Фаза запуска (Где мы используем
app.run
, после цикла выполнения все остальные директивы выполняются с использованием цикла компиляции)
Провайдер - это не что иное, как сервис / фабрика, но самое главное, он может быть доступен на этапе настройки.
пример
Предположим, у нас есть ниже поставщика
myApp.provider('unicornLauncher', function UnicornLauncherProvider() {
var useTinfoilShielding = false;
this.useTinfoilShielding = function(value) {
useTinfoilShielding = !!value;
};
this.$get = ["apiToken", function unicornLauncherFactory(apiToken) {
return new UnicornLauncher(apiToken, useTinfoilShielding);
}];
});
В то время как вводить его внутри конфигурации, вы всегда должны префикс его Provider
лайк unicornLauncherProvider
При использовании внутри контроллера вы можете использовать его как unicornLauncher
Замечания:
Провайдер всегда доступен внутри
.config
(конфигурация) фаза с суффиксомProvider
в их имени, в то время как внутри контроллера вы могли бы> непосредственно ввести его с помощьюunicornLauncher
(прямое название провайдера)Услуги / Фабрика Они не видны в фазе конфигурации угловых
Все еще путают, тогда обращайтесь по этой ссылке
Вы можете получить доступ только к сервисам в контроллере, но не к провайдерам $route
Вот.
Поэтому вы получаете сообщение об ошибке $routeProviderProvider, потому что он ищет провайдера для $routeProvider
который сам является поставщиком для $route
,