我应该总是在angularjs模块中声明'ng'依赖吗?

时间:2013-12-01 11:42:42

标签: angularjs

以下代码会导致错误:

<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依赖性的情况下首先构建模块?

1 个答案:

答案 0 :(得分:0)

angular.injector方法需要两个参数:

  • 包含公共依赖项的根模块
  • 包含专门代码的依赖模块

具体做法是:

  

AngularJS提供了一个模块依赖系统。您指定Angular您希望它加载的根模块是什么,它还将加载所有相关模块。因此,对于每个应用程序,您可以拥有一个依赖于包含公共组件的其他模块的单个模块。同样,这是在AngularJS应用程序中记录的处理方式。

     

当Angular应用程序以给定的应用程序模块启动时,Angular会创建一个新的inject实例,该实例又创建一个recipes注册表,作为核心“ng”模块,应用程序模块及其依赖项中定义的所有配方的联合。 。当需要为您的应用程序创建对象时,注入器会查询配方注册表。

<强>参考