Javascript 减少角度js控制器中的依赖项

Javascript 减少角度js控制器中的依赖项,javascript,angularjs,Javascript,Angularjs,如何减少我们在angular js控制器中提供的依赖性,如 app.controller('sampleController',函数($scope、$timeout、$localStorage、$http、$location)) .controller('sample1Controller',函数($scope、$timeout、$localStorage、$http、$location)) .controller('sample2Controller',函数($scope、$timeout、$

如何减少我们在angular js控制器中提供的依赖性,如

app.controller('sampleController',函数($scope、$timeout、$localStorage、$http、$location))
.controller('sample1Controller',函数($scope、$timeout、$localStorage、$http、$location))
.controller('sample2Controller',函数($scope、$timeout、$localStorage、$http、$location))
.controller('sample3Controller',function($scope、$timeout、$localStorage、$http、$location))

我对多个控制器使用相同的依赖集


我们是否可以将所有依赖项存储在一个变量中,并将其用于所有控制器。

尝试为控制器中的功能创建服务。那么你的代码就是这样的,比如

    app.controller('sampleController', function($scope, serviceA, $location))

app.service('serviceA', function($timeout, $localStorage, $http) {
// do something here
});

从控制器中提取的代码越多,注入就越少。您可以在angular中创建自定义服务,该服务返回依赖项,您可以将该服务注入控制器并访问它们。但您将无法在服务中包含$scope,因为作用域仅对controller可用

//角度模块实现
(功能(){
"严格使用",;
有棱角的
.module('app',[]);
})();
//角度控制器
(功能(){
"严格使用",;
var controllerId='myCtrl';
有棱角的
.module('应用程序')
.控制器(controllerId,['common',函数(common){
var vm=这个;
init();
函数init(){
vm.count=0;
common.interval(函数(){
vm.count++;
}, 1000);
}
}]);
})();
//返回解雇通知的服务
(功能(){
"严格使用",;
var serviceId='common';
有棱角的
.module('应用程序')
.factory(serviceId、['$timeout','$interval',函数($timeout,$interval){
返回{
超时:$timeout,
间隔:$interval
};
}]);
})();

我的计数是:{{vm.Count}!

如果您不想看到静态注入控制器的所有依赖项,并且需要在一个位置执行此操作,则可以使用$injector创建一个对象,该对象将引用所有依赖项

.factory('dependencies', function($injector){

   var dependencies;
   dependencies.fooDependency = $injector.get('fooDependency');
   dependencies.barDependency = $injector.get('barDependency');

   return dependencies;
}) 
将此工厂注入控制器并使用它访问依赖项

.factory('dependencies', function($injector){

   var dependencies;
   dependencies.fooDependency = $injector.get('fooDependency');
   dependencies.barDependency = $injector.get('barDependency');

   return dependencies;
})