Angular.JS - 是否可以在指令中拥有多个视图?

时间:2016-04-12 10:13:54

标签: javascript html angularjs

我试图找出您是否可以在指令中包含多个html文件,然后根据您通过html标记传递的内容,它会显示不同的HTML布局。

这是我正在建造的手风琴所需要的东西。我们希望能够重复使用该指令,但有时html将采用不同的布局。

到目前为止,我相信这可以通过以下方式完成:

<accordion data-attr="layout('feedback')></accordion>

然后在Js中检查已经传递的内容并将该指针指向另一个视图。

我不确定的是将accordion指令指向另一个html文件。

2 个答案:

答案 0 :(得分:2)

您只需在模板中使用ng-include指令:

module.directive('accordion', function() {
  return {
    scope: { type: '&' },
    template: '<div ng-include="type()"></div>'
  };
});

答案 1 :(得分:1)

是的,在您的指令中,您可以将模板设置为接受元素和属性的函数。

.directive('accordion', function() {
  return {
    templateUrl: function(elem, attr){
      return 'layout-' + attr.type + '.html';
    }
  };
});

并使用它:

<accordion type="some-file"></accordion>