带有递归指令的 ng-if 不能按预期工作

ng-if with recursive directives does not work as expected

我在 ui-bootstrap 选项卡中有两个递归指令。出于性能原因,我只想在相应选项卡处于活动状态时实际加载指令。所以我像这样在指令上使用 ng-if :

<dave ng-if="activeTab === 0"></dave>
...
<bob ng-if="activeTab= === 1"></bob>

现在,如果您转到选项卡 0,您会看到“dave”。然后转到选项卡 1,您会看到“bob”。返回选项卡 0,您仍然看到“bob”。如果我删除 ng-if 一切都按预期工作:dave、bob、dave。

我只需要在选项卡处于活动状态时才能呈现指令。我试过将指令放在 div 中并像这样使用 ng-if :

<div ng-if="activeTab === 0"><dave></dave></div>

但是还是有同样的问题

Codepen of problem

通过执行以下操作,我能够让选项卡正确地来回移动:

<div class="container" ng-app="app">
  <uib-tabset active=activeTab>
    <uib-tab index=0>
      <uib-tab-heading>Tab One</uib-tab-heading>
      <dave ng-if="active === index" recurse="true"></dave>
    </uib-tab>
    <uib-tab index=1>
      <uib-tab-heading>Tab Two</uib-tab-heading>
      <bob ng-if="active === index" recurse="true"></bob>
    </uib-tab>
  </uib-tabset>
</div>