11

我正在使用此控制器在 angular-ui 中使用选项卡:

$scope.panes = [
    { title:"Home",      content:"home" , active: true},
    { title:"Settings",  content:"settings"},
    { title:"View",      content:"view"}
];

这在 html 文件中:

<tabs>
    <pane
      active="pane.active"
      heading="{{pane.title}}"
      ng-repeat="pane in panes"
    >
      {{pane.content}}
    </pane>
  </tabs>

但我想将内容设置为模板我该怎么做,我尝试在这个plunker中设置 ng-include 代码,但没有奏效。
提前致谢。

更新:

如果您找到此解决方案并且您没有使用 angular-bootstrap v0.12,则需要将代码更新为 v0.13 的新语法,如下所示:

<tabset>
    <tab
      active="pane.active"
      heading="{{pane.title}}"
      ng-repeat="pane in panes"
    >
      <div ng-include="pane.content"></div>
    </tab>
  </tabset>

我已经更新了plunker以获得 angular-bootstrap v0.13 的语法。

4

1 回答 1

25

只需将ng-include添加为窗格的子项

<tabs>
    <pane active="pane.active"
          heading="{{pane.title}}"
          ng-repeat="pane in panes">
        <div ng-include="pane.content"></div>
    </pane>
</tabs>

这样做的原因是,当您在与创建窗格变量的ng-repeat相同的元素中使用ng-include时,范围变量窗格尚不可用。

这是因为ng-include的优先级值为0(默认),而 ng-repeat 的优先级为 1000,因此执行顺序为:

  1. ng-包括
  2. ng-重复

请参阅指令文档

于 2013-02-15T15:13:27.737 回答