/ / Angular and requirejs、インジェクタを備えたプロバイダ - javascript、angularjs、requirejs

Angularとrequirejs、インジェクタを備えたプロバイダ - javascript、angularjs、requirejs

私は試している私のアプリの実用版を持っていた今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 = [];

言及する価値があることの1つは、トップビットの形式を変更したことです(JSlinterは私に怒鳴りつけました)。 requirejsフォーマットに変換する前に動作していたとき、トップビットは次のようになりました。

   $moduleObjectProvider.$inject = [];

function $moduleObjectProvider() {

それはすべてがうまく打っているようです、注射器はここで問題を抱えています(私は思います)。私はここで壁を打った - 誰かが状況に光を当てることができれば素晴らしいだろう。ありがとうございます。

回答:

回答№1は1

あなたがするから var myFunction = function(){} あなたの機能はトップに「持ち上げられる」わけではありません。そのため、$ inject配列を設定するときは未定義です。に変更 function myFunction(){} あなたは大丈夫でしょう。