我试图将我的工厂注入我的控制器,并且我从AngularJS收到此错误:
错误:$ injector:unpr未知提供商
我已经查看了这里的几乎所有问题,但仍无法找到问题的解决方案。我相信我的控制器和工厂正确地宣布并且注射是正确的但看起来并非如此。
我的工厂代码如下:
var app = angular.module('test', []);
app.factory('processingFactory', function () {
var factory = {};
factory.newTest = function() {
console.log("TEST");
}
return factory;
});
然后将其注入控制器,如下所示:
angular.module("test", ["angularModalService", "anguFixedHeaderTable",
'angular-loading-bar', "ngResource", "agGrid",
'ui.tree']).controller("dashboardController", [
"$scope",
"$timeout",
"$http",
"$window",
"$interval",
"$resource",
"ModalService",
"$filter",
'$q',
'processingFactory',
function($scope, $timeout, $http, $window, $interval, $resource,
ModalService, $filter, $q, processingFactory) {
//other code removed
$scope.newWorkorder = processingFactory.newWorkorder;
}
]);
通过点击网页上的按钮调用此功能。所需的所有文件都在此html页面上的脚本标记中。我对角度很新,所以这可能是一个简单的错误或我不知道的事情。
答案 0 :(得分:0)
使用数组作为第二个参数调用angular.module
声明一个模块,该模块只能发生在任何给定的模块名称中。您正在声明模块两次(一次在控制器代码中,再次在您的工厂代码中)。
尝试将工厂代码的第一部分更改为:
var app = angular.module('test');
如果您在应用程序的其他位置执行相同的操作,则还需要删除第二个参数,以便整个应用程序中只有一个模块声明。
答案 1 :(得分:0)
如果你的模块有任何依赖关系" test"你为什么不在第一行宣布它们如下:
var app = angular.module("test", ["angularModalService", "anguFixedHeaderTable",
'angular-loading-bar', "ngResource", "agGrid",
'ui.tree']);
然后将您的控制器声明为::
app.controler(...)
事情应该很好。