Как узнать, какие зависимости я могу ввести в контроллер?

Я пытаюсь использовать $routeProvider зависимость внутри моего контроллера:

.controller('mainController', function($scope, $state, $routeProvider) {

Но я получаю ошибку:

Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider

Как мне узнать, какие зависимости я могу ввести в любой данный контроллер?

2 ответа

Решение

Есть две фазы внутри угловой

  1. Фаза конфигурации (здесь мы используем app.config написать код)
  2. Фаза запуска (Где мы используем 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,

Документы