Angularjs - 未知提供商

时间:2014-06-02 22:20:40

标签: angularjs

每当我这样做时:

app.controller('hangmanController', ['$scope', 'wordnickAPIService', function ($scope, wordnickAPIService) {

我明白了:

[$injector:unpr] Unknown provider: wordnickAPIServiceProvider <- wordnickAPIService

我通过This discussion阅读了该主题,但没有看到应用的答案。我确信这是一件简单或微不足道的事情,但是,jeez,如果Angular没有让我适合尝试将它们拼凑起来。

相关HTML:

<body ng-app="angularHangmanApp" ng-controller="hangmanController">

我的控制器:

'use strict';

var app = angular.module('angularHangmanApp', []);

app.controller('hangmanController', ['$scope', 'wordnickAPIService', function ($scope, wordnickAPIService) {

[...]variable declarations[...]

var wordListURL = 'http://long_url_that_returns_some_json';

$scope.wordList = wordnickAPIService.get(wordListURL);
}]);

我的工厂:

'use strict';

var app = angular.module('angularHangmanApp', []);

app.factory('wordnickAPIService', ['$http', function($http) {
    return {
        get: function(url) {
            return $http.get(url);
        },
        post: function(url) {
            return $http.post(url);
        },
    };
}]);

2 个答案:

答案 0 :(得分:0)

问题在于您正在创建具有相同名称的多个模块。

要使用角度创建模块:

var app = angular.module('angularHangmanApp', []);

然后在其他地方获取该模块,只需输入:

var app = angular.module('angularHangmanApp');

没有额外[] ......

还要确保在尝试调用之前声明服务。

答案 1 :(得分:0)

在您的工厂和控制器中,您实际上正在重新定义app模块。

而不是说

var app = angular.module('angularHangmanApp', []);

var app = angular.module('angularHangmanApp');

在应用程序中只使用第一种调用方式(可能只是app.js)。所有其他引用应该使用第二个样式调用,否则,您将不断重新定义角度应用程序并丢失之前声明的所有控制器,工厂和指令。