我正在尝试养成按照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/

10-12 15:32