目前我正在試圖重構遵循最佳實踐和JohnPapa的風格指南,這意味着,除其他事項外,我應該從setTimeout
setInterval
切換到$timeout
,對我們公司的一切$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'一個對象,你可以創建一個工廠,注入所有這些和返回對象你現在正在分配'baseServices' – tanmay
@tanmay其實這就是我寫這個問題時的想法! (它總是一樣的......)但是這不是「髒」嗎?如果沒有更好的辦法,我會這樣做,但我想知道是否有更清潔/可接受的方式 –
我寧願隨着一次性的過程而疲憊不堪。但如果你完全注入了大量注射劑,這將是最清潔的可能的方式AFAIK – tanmay