我有以下代码:
angular.module('app')
.directive('directiveA', function () {
return {
templateUrl: '/template-a.html'
};
}
)
.directive('directiveB', function () {
return {
templateUrl: '/template-b.html'
};
}
)
.directive(// I hope you got the point.
该代码不是很干,我更喜欢使用ng-include
,但这些指令非常好,如页脚,标题,flash消息等,并允许编写非常易读的HTML,所以可能最好有它们。
我可以以某种方式添加angular.module附加方法,例如viewDirective
,以这种方式描述指令:
angular.module('app')
.viewDirective('directiveA', '/template-a.html')
.viewDirective('directiveB', '/template-b.html')
...
我可以将它添加到angular.module.prototype
,还是有更好的方法来扩展模块方法?类似的东西已经实现了角度,所以我不发明轮子?或者使用ng-include
更好吗?
答案 0 :(得分:2)
如果保留指令名称和路径约定,则可以执行以下操作:
var directiveNames = ['a', 'b', 'c'];
_.forEach(directiveNames, function (name) {
angular.module('app').directive(name, function () {
return {
templateUrl: '/' + name + '.html'
}
)
});
你可以找到对angular本身的引用,在这里以编程方式创建自己的DRY原则指令: https://github.com/angular/angular.js/blob/d077966ff1ac18262f4615ff1a533db24d4432a7/src/ng/directive/ngEventDirs.js (第49行)