6

我有以下内容:

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 中时不起作用

4

2 回答 2

8

只有提供者和常量可以注入到配置块中。有关更多见解,请参阅 AngularJs 文档:http ://docs.angularjs.org/guide/module (sektion "Module Loading & Dependencies")。

配置块 - 在提供者注册和配置阶段执行。只有提供者和常量可以注入到配置块中。这是为了防止在完全配置之前意外实例化服务。

于 2013-09-22T17:51:03.953 回答
2

虽然接受的答案正确回答了问题,但它没有提供任何解决方案(对于寻找正确方法的 Angular 新手)。

您可以在运行时访问服务,这发生在配置之后。例如:

angular.module('app').run(storeAdminContent);

storeAdminContent.$inject = ['localStorageService'];
function storeAdminContent(localStorageService) {
    localStorageService.add('adminContent', 'xx');
}
于 2016-04-24T17:26:31.083 回答