我有一个我的应用程序的工作版本,我试图将其拆分为requirejs模块。我遇到一些有一些注射器工作的供应商的问题。当我把它带入require js时,它似乎不想正确地注入我的提供者。我可以使用一些帮助,这个让我难过。
这就是我的意思 -
提供者 -
define('test/my-provider',['angular',
'test/my-factory'
],
function myProvider(angular, MYfactory) {
var metadata = {
componentName: 'myProvider',
moduleName: 'test.myProvider'
};
var $moduleObjectProvider;
$moduleObjectProvider.$inject = [];
$moduleObjectProvider = function() {
var trackConstructor = {};
this.moduleConstructor = function(name, cb) {
//constructor
};
var $get;
this.$get = $get;
$get.$inject = ['URLfactory', '$log', '$location'];
$get = function(URLfactory, $log, $location) {
return {
function1: function(var1) {
},
function2: function(var1, var2) {
},
function3: function() {
}
};
};
};
//metadata.componentName ?
angular.module(metadata.moduleName, []).provider(metadata.componentName, $moduleObjectProvider);
return metadata;
}
);
我遇到的问题是注射器 -
TypeError: Cannot set property '$inject' of undefined
指向包含
的行 $moduleObjectProvider.$inject = [];
值得一提的是我改变了顶部位的格式(JSlinter对我大吼大叫)。当它工作之前将其变为requirejs格式时,顶部位看起来像这样:
$moduleObjectProvider.$inject = [];
function $moduleObjectProvider() {
似乎一切都很好,注射器在这里有问题(我想)。我在这里碰到了一堵墙 - 如果有人能够了解情况会很好。谢谢!
答案 0 :(得分:1)
因为你的var myFunction = function(){}
你的功能没有被“悬挂”到顶部。所以在设置$ inject数组时它是未定义的。将其更改为function myFunction(){}
,您应该没问题。