Вы можете впрыснуть его вручную:
myApp.config(function() {
var $cookies;
angular.injector(['ngCookies']).invoke(['$cookies', function(_$cookies_) {
$cookies = _$cookies_;
}]);
// here you can use $cookies as usual
});
Вы можете спросить, почему мы должны указать ngCookies
к injector()
вызова, а также к вызову .invoke()
?
ngCookies
- это название модуля (в этом проекте вам понадобится angular-cookies.js, чтобы иметь возможность использовать этот модуль). Когда вы создаете инжектор, вызывая injector()
, вы указываете, какие модули следует использовать, чтобы можно было использовать сервисы из этих модулей.
invoke()
вызывает функцию, но давайте вы указать, какие услуги (предоставляемые различными модулями), должны быть переданы в функцию (в нашем случае услуги, предоставляемые ngCookies
модуль с именем $cookies
)
Это решение является немного взломать, потому что вы вручную создаете новый инжектор отдельно от того, который автоматически создается и использует ваше угловое приложение, но он должен быть безопасным, потому что ngCookie
, по-видимому, использует только функциональные углы, которые не сохраняют свое собственное состояние и являются лишь тонкими обертками функциональности браузера.
Как указано в Угловой документации (http://docs.angularjs.org/guide/module) - Загрузка модулей и Зависимости - * Блоки конфигурации - выполняются во время регистрации и конфигурации поставщика. Только поставщики и константы могут быть введены в конфигурационные блоки *. Вот почему вы получаете ошибку 'Unknown provider: $ cookies из myApp', поскольку' $ cookie' является сервисом и поэтому недоступен в блоке 'config'. – Tom