我有以下内容:
var app = angular
.module('app', ['ui.router', 'admin', 'home', 'questions', 'ngResource', 'LocalStorageModule'])
.config(['$sceProvider', '$stateProvider', '$locationProvider', 'localStorageService',
function ($sceProvider, $stateProvider, $locationProvider, localStorageService ) {
$sceProvider.enabled(false);
$locationProvider.html5Mode(true);
localStorageService.add('adminContent', 'xx');
这给了我一个错误:
Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:unpr] Unknown provider: localStorageService
http://errors.angularjs.org/1.2.0-rc.2/$injector/unpr?p0=localStorageService
at hasOwnPropertyFn (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:78:12)
at http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:2997:19
at getService (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:3119:39)
at Object.invoke (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:3140:13)
at http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:3078:37
at Array.forEach (native)
at forEach (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:224:11)
at loadModules (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:3065:5)
at createInjector (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:3007:11)
at doBootstrap (http://127.0.0.1:81/Scripts/angular-v1.2.0-rc.2.js:1152:20)
http://errors.angularjs.org/1.2.0-rc.2/$injector/modulerr?p0=app&p1=Error%3…http%3A%2F%2F127.0.0.1%3A81%2FScripts%2Fangular-v1.2.0-rc.2.js%3A1152%3A20)
在这样的配置中是否无法使用localStorage?我已经包含了localstorage模块的代码,并在app.js之前加载了它。它适用于应用程序的其他部分,但放在app.config
中时,同一行不起作用答案 0 :(得分:8)
只有提供程序和常量可在配置块中注入。有关更多见解,请参阅AngularJs文档:http://docs.angularjs.org/guide/module(sektion“模块加载和依赖关系”)。
配置块 - 在提供商注册期间执行 和配置阶段。只能注入提供者和常量 到配置块。这是为了防止意外实例化 服务完全配置之前的服务。
答案 1 :(得分:2)
虽然接受的答案正确回答了问题,但它没有提供任何解决方案(Angular新手正在寻找正确的方法)。
您可以在运行时访问服务,这在配置后会发生。例如:
angular.module('app').run(storeAdminContent);
storeAdminContent.$inject = ['localStorageService'];
function storeAdminContent(localStorageService) {
localStorageService.add('adminContent', 'xx');
}