Javascript 不同模块的角度注入

Javascript 不同模块的角度注入,javascript,angularjs,dependency-injection,Javascript,Angularjs,Dependency Injection,我明白了,这个错误 错误:[ng:areq] 当我尝试以下方法时 HTML 工厂 angular .module('dataLayerModule', []) .factory('datalayer', [$http], function (http) { //some method in here that uses http request return factory; }); 控制器 angu

我明白了,这个错误

错误:[ng:areq]

当我尝试以下方法时

HTML

工厂

angular
    .module('dataLayerModule', [])
    .factory('datalayer', [$http],

        function (http) {

         //some method in here that uses http request
            return factory;
        });
控制器

angular
    .module(‘angularmodule’, [‘ui.module', 'dataLayerModule'])
     .controller('mycontroller', ['$scope', 'datalayer', function ($scope, datalayer) {

        //this is dependent on two modules being injected i.e. ‘ui.module','dataLayerModule'
    }]);
如果我将工厂('dataLayerModule')模块注入从正上方剥离,它就会工作,例如

    angular
        .module('angularmodule’, ['ui.module'])
        .controller('mycontroller', ['$scope', function ($scope) {


        }]);
问题是我的“dataLayerModule”注入和它的“datalayer”工厂没有被注入,我想。 上面的javascript代码位于不同的文件中,但已正确加载到html中

我要做的是将工厂注入控制器,工厂将负责通过ajax获取json数据

这些不同模块的原因是“ui模块”来自我无法控制的第三方


如果有人能创建一个plunker,只要这个注入功能/加载正确,我将不胜感激,这让我抓狂

您在将
$http
依赖项注入工厂时出现语法错误,很可能会破坏工厂代码。您当前没有在注入依赖项的数组中包含factory方法。
$http
周围也没有引号,并且没有正确地注入工厂(当它作为参数传递给函数时,没有
$
符号)。应该是:

angular
.module('dataLayerModule', [])
.factory('datalayer', ['$http', function($http) {

    //some method in here that uses http request
    return factory;
}]);
替代语法

使用上述语法(包括依赖项和数组中的函数),可能很难发现此类错误。另一种更显式的语法是将函数名传递到工厂方法中,并进一步声明函数

angular
    .module('dataLayerModule', [])
    .factory('datalayer', dataLayer);

dataLayer.$inject = ['$http'];

function dataLayer($http) {

    //some method in here that uses http request
    return factory;
}

在您的
工厂
声明中,您说:

.factory('datalayer', [$http], function (http) {})
但我认为这就是你想要的:

.factory('datalayer', ['$http', function (http) {}])

问题可能存在于“dataLayerModule”中,即使我从数据层中删除了代码,但仍然存在错误,$http以及您使用的引号看起来不同,请检查它。在处理文本区域之前,请先在word中输入文本,这是一个输入错误。我会在早上看看我能做些什么,现在在英国已经很晚了,谢谢
.factory('datalayer', [$http], function (http) {})
.factory('datalayer', ['$http', function (http) {}])