0

こんにちは、angularjs コントローラー Method1 で依存性注入の 2 つの方法を見てきました。

 mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {}); 

方法 2:

mainApp.controller('CalcController', ['$scope', 'CalcService', 'defaultInput',function($scope, CalcService, defaultInput) {}]);

method1 と method2 の違いは何ですか?

4

4 に答える 4

1

2 番目の方法は、注射をminification安全にします。実際のパラメーター名は短縮されますが、それらを 2 倍に指定することで引き続きマッピングできます。

したがって、2 番目の方法を使用する必要があります。

于 2015-12-03T13:12:00.577 に答える
0

「CalcService」は「_a」のような名前に変更されるため、javascript を縮小する場合、方法 1 は機能しません。そのため、バージョン 2 では、ミニファイヤが文字列に触れないため、名前を保持します。したがって、サービス名はそのままです。

于 2015-12-03T13:12:04.860 に答える
0

方法 2 では、コードを縮小しても正しく機能することができます。

Javascript には名前付き関数パラメーターはありませんが、angular の依存関係システム kindof はこれを拡張して、名前付きパラメーターを許可します (これは依存関係システム全体ではなく、単なる依存関係システムです)。それが、何を注入するかを知る方法です。

ただし、コードを縮小すると、関数パラメーターの名前が変更され、angulars インジェクション システムが壊れます。

angularが行うことは、配列を使用して実際の依存関係を名前で見つけ、それを関数内のその位置の変数に挿入することです。これは、配列内の順序が、使用する関数パラメーターの順序と一致する必要があることを意味します。

于 2015-12-03T13:12:39.473 に答える
0

依存性注入に関する公式の Angular ドキュメント -

https://github.com/angular/angular.js/blob/master/docs/content/guide/di.ngdoc#L103

于 2015-12-03T13:12:46.860 に答える