以下代码会导致错误:
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.js"></script>
<script>
var myModule = angular.module('myModule', [/*'ng'*/]);
myModule.controller('testCtrl', function(){});
var injector = angular.injector(['ng', 'myModule']); // this works
console.log(injector); // it really works
angular.injector(['myModule']); // this does not work, but I think it should
</script>
</html>
对angular.injector
的第二次调用失败了:
[$injector:modulerr] Failed to instantiate module myModule due to:
Error: [$injector:unpr] Unknown provider: $controllerProvider
我可以通过明确地将ng声明为myModule的依赖项来解决这个问题,如注释代码所示。我应该为包含控制器的所有模块执行此操作,还是在angularjs中发现错误?为什么我可以在不声明ng依赖性的情况下首先构建模块?
答案 0 :(得分:0)
angular.injector方法需要两个参数:
具体做法是:
AngularJS提供了一个模块依赖系统。您指定Angular您希望它加载的根模块是什么,它还将加载所有相关模块。因此,对于每个应用程序,您可以拥有一个依赖于包含公共组件的其他模块的单个模块。同样,这是在AngularJS应用程序中记录的处理方式。
当Angular应用程序以给定的应用程序模块启动时,Angular会创建一个新的inject实例,该实例又创建一个recipes注册表,作为核心“ng”模块,应用程序模块及其依赖项中定义的所有配方的联合。 。当需要为您的应用程序创建对象时,注入器会查询配方注册表。
<强>参考强>