我在尝试使用不同模块的Angular依赖注入时遇到了一些问题。目前,我有以下内容。在我的index.html
中,文件按以下顺序加载(<body>
标记的结尾):
network.js
authentication.js
login.js
app.js
network.js
angular.module('services.network', [])
.factory('Network', ['$http', '$state', function ($http, $state) { ... }]);
authentication.js
angular.module('services.authentication', ['services.network'])
.factory('Authentication', ['$state', 'Network', function ($state, Network) { ... }]);
login.js
angular.module('controllers.login', [])
.controller('LoginCtrl', ['$scope', function ($scope) { ... }]);
app.js
var app = angular.module('parkmobi', [
'ngRoute',
'services.network',
'services.authentication',
'controllers.login'
]);
app.run(['$rootScope', function ($rootScope) {
$rootScope.$on('$viewContentLoaded', function () {
$(document).foundation('reflow');
});
}])
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'templates/login.html',
controller: 'LoginCtrl'
});
}]);
到目前为止,一切似乎都很开心。但是,现在,我想在Authentication
中使用LoginCtrl
服务,我认为这样做的工作如下:
login.js
angular.module('controllers.login', ['services.authentication'])
.controller('LoginCtrl', ['$scope', 'Authentication', function ($scope, Authentication) { ... }]);
但是,这会导致以下注入错误:
Error: [$injector:unpr] http://errors.angularjs.org/1.3.15/$injector/unpr?p0=%24stateProvider%20%3C-%20%24state%20%3C-%20Authentication
R/<@http://localhost/testapp/vendor/angularjs/angular.min.js:6:417
答案 0 :(得分:1)
出现错误是因为您已在$state
工厂注入了Authentication
个提供商,而ui.router
app.js
模块中没有parkmobi
个模块。
它应该使用$route
代替$state
,因为您正在使用angular-router进行路由。
angular.module('services.authentication', ['services.network'])
.factory('Authentication', ['$route', 'Network', function ($route, Network) { ... }]);
或者如果您想使用ui-router
,则需要在注册$stateProvider
s&amp;时使用state
。 ui.router
模块应该包含在您的应用中。