让我们假设我有js / modules / auth js / modules / home js / modules / panel目录。我的主app.js看起来像这样:
angular.module('myApp.homeApp', ['myApp.homeApp.services']);
angular.module('myApp.auth', ['myApp.auth.services']);
angular.module('myApp.panelApp', []);
然后我像这样注射它们:
var myApp = angular.module('myApp', ['ngCookies', 'ui.router', 'ui.bootstrap', 'angular.css.injector', 'myApp.auth', 'myApp.homeApp', 'myApp.panelApp'])
我在js / modules / auth / services / authService.js中有两个工厂:
angular.module('myApp.auth.services', [])
.factory('Auth', function($http, $cookieStore)
angular.module('myApp.auth.services', [])
.factory('Users', function($http)
基本上我正在尝试实施https://github.com/fnakstad/angular-client-side-auth 但是当我在app.js中有行:
myApp.run(['$rootScope', '$state', 'myApp.auth.services.Auth', function ($rootScope, $state, Auth)
我得到:未捕获错误:[$ injector:unpr]未知提供商:myApp.auth.services.AuthProvider
所以任何人都可以给我一个提示如何正确注入模块 - 服务等。?
答案 0 :(得分:1)
您不能使用相同的名称初始化两个模块。您应该以不同方式命名,或者只是第二次调用它:angular.module('some_name',[])
将初始化一个新模块,其中angular.module('some_name')
将调用现有模块。
angular.module('myApp.auth.services', [])
.factory('Auth', function($http, $cookieStore)
angular.module('myApp.auth.services')
.factory('Users', function($http)
答案 1 :(得分:1)
每个模块都应注入依赖库/模块
//module injection indicates Module definition. When you see `[]` is used,
//a module is defined
angular.module('myApp.homeApp', ['ngRoute', 'ngResource']); //for example
angular.module('myApp.auth', []);
angular.module('myApp.panelApp', []);
var myApp = angular.module('myApp', ['ngCookies', 'ui.router', 'ui.bootstrap',
'angular.css.injector', 'myApp.auth',
'myApp.homeApp', 'myApp.panelApp'])
从此以后,要使用模块,您不需要注入依赖项,所以
angular.module('myApp.auth.services', [])
.factory('Auth', function($http, $cookieStore)
angular.module('myApp.auth.services')
.factory('Users', function($http)
一旦定义了一个模块,就必须直接使用它,而不是每次使用它时都定义它。