【发布时间】:2015-05-25 12:44:12
【问题描述】:
在 Angular 中,直接从 $injector 实例而不是作为参数获取依赖项是否被认为是一种好习惯?
我遇到的问题是我的控制器开始有很多依赖项,所以而不是:
myApp.controller(['$scope', 'Dep1', 'Dep2', 'Dep3', function($scope, Dep1, Dep2, Dep3) {
...
}]);
我愿意:
myApp.controller(['$scope', '$injector', function($scope, $injector) {
var Dep1 = $injector.get('Dep1');
var Dep2 = $injector.get('Dep2');
var Dep3 = $injector.get('Dep3');
}]);
我发现它在功能方面是相同的,但参数上的混乱要少得多。我想这会让我的组件不太容易测试,对吧?
你怎么看?
【问题讨论】:
-
如果你总是要在多个控制器中使用 Dep1,Dep2,Dep3。您可以创建一个将这些导出为属性的服务,然后仅依赖于该服务。
-
测试是一个因素。真正的问题是大量的依赖通常表明你的控制器做得太多了。什么是“大”取决于具体情况。
标签: javascript angularjs