私は現在、ベストプラクティスとJohnPapaのスタイルガイドに従い、当社のすべてをリファクタリングしようとしています。つまり、setTimeout
から$timeout
、setInterval
に切り替えるはずです。 $interval
など角型サービスをまとめて複数のコントローラに注入する
しかし、私はそれが毎回これらのサービスを注入しなければならないのは、疲れて、厄介で、直感に反していることがわかります。この結果、コントローラの宣言が繰り返し繰り返され、要素の半分が役に立たず、明白になります。
angular.module('myModule',[])
.controller('MyController', ['$scope', '$http', '$timeout', '$interval', MyController])
.controller('MyController2', ['$scope', '$http', '$timeout', '$interval', MyController2])
.controller('MyController3', ['$scope', '$http', '$timeout', '$interval', MyController3])
私はこの醜いと維持する痛みを見つける;これが私がいつもsetTimeout
よりも$timeout
を好む理由ですが、今私は改善しようとしています。
サービスを "一括注入"する方法はありますか?以下のような例を何かのために
:
var baseServices = {
http: $http,
scope: $scope,
timeout: $timeout,
interval: $interval,
};
angular.module('myModule',[])
.controller('MyController', ['baseServices', MyController])
.controller('MyController2', ['baseServices', MyController2])
.controller('MyController3', ['baseServices', MyController3])
var MyController = function(baseServices){
baseServices.$timeout(...);
}
これはリモートで可能なものですか?
からそれを使用することができ、あなたはすべてのそれらを注入し、オブジェクトを返すファクトリを作成することができますあなたは現在 'baseServices'に割り当てています – tanmay
@tanmay実際には、私はその質問を書いていたと思いました! (それはいつも同じです...)しかし、それは "汚い"ではないでしょうか?より良い方法がない場合は、私はそれを行うだろうが、私はクリーナー/受け入れられた方法があるかどうか疑問に思っていた –
私はむしろ一度のプロセスを疲れて行くだろう..しかし、あなたが完全に大量注入には、 AFAIK – tanmay