Angular 和 requirejs,提供注入器
Angular and requirejs, provider with injectors
我有一个我的应用程序的工作版本,我正在尝试将其拆分为 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() {
似乎一切正常,喷油器在这里有问题(我认为)。我在这里碰壁了——如果有人能对这种情况有所了解,那就太好了。谢谢!
因为你做的var myFunction = function(){}
你的函数没有'hoisted'到最上面。所以在设置 $inject 数组时是未定义的。将其更改为 function myFunction(){}
应该没问题。
我有一个我的应用程序的工作版本,我正在尝试将其拆分为 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() {
似乎一切正常,喷油器在这里有问题(我认为)。我在这里碰壁了——如果有人能对这种情况有所了解,那就太好了。谢谢!
因为你做的var myFunction = function(){}
你的函数没有'hoisted'到最上面。所以在设置 $inject 数组时是未定义的。将其更改为 function myFunction(){}
应该没问题。