Angular指令而不是ng-include

时间:2016-03-23 19:52:40

标签: javascript angularjs angularjs-directive

我有以下代码:

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更好吗?

1 个答案:

答案 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行)