我正在尝试养成按照LIFT协议(定位,识别,平铺,尝试(干燥))构造我的Angular项目的习惯,但是我在解决其他文件的依赖性方面遇到了一些困难。
我有以下工厂:
(function () {
'use strict';
angular
.module('CBPWidget', [])
.factory('apiManufacturers', apiManufacturers);
function apiManufacturers () {
function hello () {
return 'hello';
}
return {
hello: hello
};
}
})();
和以下控制器:
(function () {
'use strict';
angular
.module('CBPWidget', [])
.controller('stepOneController', stepOneController);
stepOneController.$inject = ['$scope', 'apiManufacturers'];
function stepOneController ($scope, apiManufacturers) {
$scope.step = 'step1';
console.log(apiManufacturers.hello);
}
})();
并引发以下错误:
Error: [$injector:unpr] Unknown provider: apiManufacturersProvider <- apiManufacturers <- stepOneController
我的工厂JS文件放在HTML中控制器JS文件的上方(将被缩小)。
由于我是这种结构项目的新手,因此对于在哪里出错的任何建议将不胜感激。
最佳答案
在这里,您将两次创建CBPWidget模块。angular.module('CBPWidget',[])
用于创建模块和angular.module('CBPWidget')
用于获取已创建的模块。
因此,将控制器代码替换为:
(function () {
'use strict';
angular
.module('CBPWidget')//now you are getting CBPWidget module
.controller('stepOneController', stepOneController);
stepOneController.$inject = ['$scope', 'apiManufacturers'];
function stepOneController ($scope, apiManufacturers) {
$scope.step = 'step1';
console.log(apiManufacturers.hello);
}
})();
关于javascript - $ injector无法解决所需的依赖关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29804931/