我刚刚通过了一个代码,程序员创建了一个控制器数组,然后将数组添加到模块中。
以下是代码类型: -
// the array of controllers
var controllers = {};
//adding a controller to array
controllers.ExampleController1 = function(){};
controllers.ExampleController2 = function(){};
//adding the controllers to module
var ABCmodule=angular.module('ABCmodule',[]);
ABCmodule.controller(controllers);
我意识到控制器阵列是在全球范围内制作的。那不是很危险吗?此外,这是一种良好的编码风格。我更喜欢只为模块创建一个变量并在该模块中添加所有控制器。这样做的最佳方式是什么?
答案 0 :(得分:0)
这个细节设置可以通过以下方式解决:
for (var ctrl in controllers) {
if(controllers.hasOwnProperty(ctrl)) {
ABCmodule.controller(ctrl);
}
}
话虽如此,为什么不直接将控制器添加到将首先声明的模块?使用lodash的_.forOwn()
angular
.module('abc', [])
.controller('ctrl1', ctrl1)
.controller('ctrl2', ctrl2); // ...
function ctrl1() {
}
function ctrl2() {
}
答案 1 :(得分:0)
Angular始终在内部执行此操作,但您不必将其源代码样式作为paragon接受。将变量保存在IIFE中是可以的。
如果你想保持风格,你可以这样做:
ctrlModule.config(function ($controllerProvider, controllers) {
angular.forEach(controllers, function (constructor, name) {
$controllerProvider.register(name, constructor);
});
});
ctrlModule.constant('controllers', { ... });