我目前正在尝试按照最佳实践和 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(...);
}
这是遥不可及的事情吗?
也许您可以使用工厂对所有这些服务进行分组并从控制器使用它
angular.module('myModule',[])
.controller('MyController', ['baseServices', MyController])
angularApp.factory('baseServices', baseServices );
function baseServices ($scope, $http, $timeout, $interval) {
return {
scope: $scope,
http: $http,
timeout: $timeout,
interval: $interval
};
}