2016-10-13 4 views
0

私はangular1を学んでおり、サービスと工場を訪れました。目的のサービス名を表す文字列を渡して、以下に示すように.factory()メソッドを呼び出しました。私は後で文字列名と同じ変数を参照することができましたが、変数を実際に作成したことはありません。誰がなぜこれが当てはまるのか知っていますか?私はそれが依存性注入と関係があると思っていますが、私はangular/jsがこの自動変数作成を達成する仕組みを理解できません。アングルファクトリーサービス変数作成機構

app.factory('myData', function() { 
    return {...} 
} 

app.controller('MyController', 
    function MyController($scope, myData) { 
     ... 
    } 
); 
+0

http://stackoverflow.com/questions/16596569/angularjs-what-is-a-factory –

+0

ですより一般的です。私は変数参照と角度ファクトリ/サービスでのその作成について特別に尋ねています – StretchBJJ101

答えて

0

サービスや工場が角でシングルトンであり、依存性注入パターンを介してインスタンス化され、その参照は、角度のコアによって実行時に解決されます。 これは、開発者が参照を直接管理することを担当していないことを意味します。コントローラの実行時に参照が注入され、それに応じて使用することができます。ここでは、サービスの

app.controller('MyController', 
    function MyController($scope, myData) { 
     ... 
    } 
); 

DOC:ここ https://docs.angularjs.org/guide/services

Dipendency注入: https://en.wikipedia.org/wiki/Dependency_injection

+0

これは私が期待したものですが、角度はそれ自体がjavascriptで書かれています。確かにこれは、ボンネットの下に何かがあることを意味します:var [x] = – StretchBJJ101

+0

var [x] = ...、[x]は文字列です。私はこれがjavascriptで可能だとは思わなかった。私はあなたが文字列から変数名を作成することを可能にする機能を認識していません – StretchBJJ101

+0

私はあなたの懸念を理解していません。はい、カーテンの後ろのどこか角度は何か、var myData = myDataFunction()この場合、ファクトリを表す関数は一度呼び出され、その後返されるものはキャッシュされます。 myDataをコントローラに挿入するたびに、値がパラメータとしてパラメータとして渡されます。代わりに、サービスAngularの場合は関数のNEWを呼び出しますが、これはvar myService = new myServiceFunction()の唯一の違いです。この場合でも、インスタンスはキャッシュされますinfactはシングルトンです(アプリケーション全体で1つのインスタンス)。グローバル変数を持つように – Karim

関連する問題