angular.module第二个参数“需要”的含义

时间:2014-04-02 03:46:58

标签: angularjs

回想angular.module的方法签名。如果提供了第二个参数requires,那么我们将创建一个新模块,而不是检索现有模块。从我看过的所有文档和示例中,这个参数在使用时总是传递一个空数组。我的问题是,除了告诉Angular创建新模块而不是获取现有模块之外,requires是否意味着用于其他任何事情?如果我把它传递给非空数组会发生什么?这些值是否用于任何其他目的?非常感谢与解决方案的链接。感谢。

2 个答案:

答案 0 :(得分:5)

第二个参数用于定义模块的依赖关系 - 即,在加载当前模块之前应该已经由注入器加载的模块列表(模块名称,确切地说)。

以下是如何使用此参数(存储在模块的requires属性中):( injector.js/loadModules()):

var runBlocks = [], moduleFn, invokeQueue, i, ii;
forEach(modulesToLoad, function(module) {
  if (loadedModules.get(module)) return; // skipping already loaded modules
  loadedModules.put(module, true);

  if (isString(module)) {
    moduleFn = angularModule(module); // prepared module object
    runBlocks = runBlocks.concat(loadModules(moduleFn.requires))
                         .concat(moduleFn._runBlocks);
    // ...
  }
  // ...
}
return runBlocks;

如您所见,此属性也可用于设置依赖关系层次结构(ModuleFoo取决于ModuleBar时取决于ModuleBaz)。

答案 1 :(得分:5)

需要一个模块所依赖的模块数组。

示例:

<强> moduleA.js

var customModule = angular.module ('ModuleA');
// controller, services, factories , etc codes here

app.js(主应用)

var app = angular.module ("app", ["ModuleA"]);

如果我只是使用:

angular.module ("app");

这意味着我只是检索名为&#34; app&#34;的模块。当控制器或指令或工厂在不同的JS文件中定义并且您希望将其配置到模块时,这是可用的&#34; app&#34;