我正在尝试使用 angularjs、依赖注入、工厂和 signalR 集线器来解决问题,但我收到错误 Unknown provider: personHubProvider <- personHub,我无法弄清楚是什么原因造成的。
我的代码是这样的:
首先我声明模块:
var ucp = angular.module('UCP', []);
它在 html 标记中使用ng-app="UCP"
。
然后我在 ucp 模块上为集线器设置做了一些配置,并创建了一个 signalRHub 工厂来获取集线器,而无需输入很多相同的代码:
ucp.config(function($routeProvider) {
//Declaring routes, removed this part of code cause I think it hasn't to do
//with the problem I got
$.support.cors = true;
$.connection.hub.url = config.signalR.connectionURL;
$.connection.hub.logging = config.signalR.logging;
$.connection.hub.start();
}).factory('signalRHub', [function() {
return {
person: $.connection.Persons.server
};
}]);
然后,我创建另一个工厂,负责从服务器获取数据:
ucp.factory('personHub', ['signalRHub', function(signalRHub) {
return {
get: function(onsuccess, onerror) {
signalRHub.person.get()
.done(function(persons) {
onsuccess(persons);
})
.fail(function(error) {
onerror(error);
});
}
}
}]);
我将这个工厂注入到我的控制器中,这样我就可以执行调用以从服务器获取数据并将其放入提供在浏览器中显示数据的范围内:
ucp.controller('personController', ['$scope', 'personHub', function($scope, personHub){
var self = this;
$scope.init = function() {
personHub.get(self.ongetsuccess, self.ongeterror);
}
self.ongetsuccess = function(persons) {
$scope.persons = persons;
};
self.ongeterror = function(error) {
};
}]);
当我打开网页时,我收到之前提到的错误:错误:未知提供者:personHubProvider <- personHub。
我认为创建 personHub 工厂服务出了点问题,这反过来会导致控制器出现依赖注入错误。我的问题是,是什么导致了错误,我在创建 personHub 工厂时做错了什么,如果是,我做错了什么?