以这种方式使用 DI 时:
var MainController = function MainController($scope) {
//use $scope here
};
MainController.$inject = ["$scope"];
它可以工作,但是当它像这样使用时:
var MainController = function MainController($injector) {
var $scope = $injector.get("$scope");
};
MainController.$inject = ["$injector"];
这将导致错误:
错误:[$injector:unpr] 未知提供者:$scopeProvider <- $scope
这是一个展示错误的示例的plunker,请查看评论以获取替代方案,以查看只有范围而非自定义服务受此影响。
我发现了这个Angular 错误,他们谈到在创建子 $scope 之前实例化控制器,正如Tomer Avni回答的那样,所以:
- 为什么第一种注入方式
$scope
有效,而第二种注入方式无效? - 有没有办法使用依赖注入的第二种方法
$injector
注入$scope
?