【发布时间】:2018-01-27 05:13:39
【问题描述】:
我在 AngularJS 中有一个项目,我有 baseController 和继承自它的子控制器。
class BaseController {
constructor($log, $state) {
'ngInject';
this.$log = $log;
this.$state = $state;
}
}
class ChildController extends BaseController {
constructor(myService) {
'ngInject';
super();
this.myService = myService;
}
}
我的问题是:即使我不使用它,我是否需要将所有父依赖注入注入到子控制器中?
上面的示例显示了我想要实现的目标,但它不起作用。有人知道我是否可以在不将 BaseController 服务传递给 super($scope, $state) 调用的情况下实现它?
【问题讨论】:
-
你为什么不用
super($scope,$state)? -
我需要注射两次。第一次在子构造函数中并将其传递给 super 到
BaseController,它已经注入了这些。对我来说似乎是多余的。现在我做了super($scope, $state),但我想知道是否有更好的方法?进行 2 次注射是可以的,但是当我有大约 7 次或更多时,纠正父母和每个孩子班级中的 DI 是一项工作。 -
基于类的控制器应该避免注入
$scope。应将常用功能移至服务而不是扩展控制器类。 -
$scope 只是一个例子。让我们假设有我的自定义服务(例如
AuthenticationService)而不是范围。 -
$injector Service 只将依赖注入到实例化类的构造函数中。它不会注入到祖先类的构造函数中。
标签: javascript angularjs oop ecmascript-6