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