2

我正在使用 Angular Bootstrap UI 来显示带有静态内容的标签集。我包含的引导脚本是 ui-bootstrap-tpls-0.6.0.min.js。

这是我的标记:

<tabset>
    <tab ng-show="$parent.hideme" ng-class="{active:$parent.hideme}">
        <tab-heading>
            tab1
        </tab-heading>
        <div>
            tab content 1
        </div>
    </tab>
    <tab ng-hide="$parent.hideme" ng-class="{active:!$parent.hideme}">
        <tab-heading>
            tab2
        </tab-heading>
        <div>
            tab content 2
        </div>
    </tab>
</tabset>

这是控制器

function myController($scope) {
    $scope.hideme = false;
});

如果我没有在选项卡上应用 ng-class,它工作得很好,除了当第一个选项卡隐藏和第二个选项卡显示 ($scope.hideme = false) 时,第一个选项卡的内容将显示 avtive。

如果我添加了 ng-class,则会导致 angularjs 出现错误。错误:[$parse:syntax] http://errors.angularjs.org/undefined/ $parse/syntax?p0=%7B&p1=is%20an%20unexpected%20token&p2=16&p3=%7Bactive%3Afalse%7D%20%7Bactive %3A%20active%2C%20disabled%3A%20disabled%7D&p4=%7Bactive%3A%20active%2C%20disabled%3A%20disabled%7D

使特定选项卡处于活动状态的正确方法(或正确语法)是什么?

4

1 回答 1

1

我建议不要尝试执行显示/隐藏逻辑。我也对此感到沮丧,因为UI Bootstrap Tab 文档仅显示通过与 ng-repeat 绑定创建的选项卡的导航。

但我相信您可以将 tabset 指令中的选项卡引用为 $parentScope.tabs。如此简单的导航可以使用$parent.tabs[2].select()

<tabset>
  <tab heading="Tab 1">
    <button class="btn btn-success" ng-click="$parent.tabs[2].select()">Go to Tab 3</button>
  </tab>
  <tab heading="Tab 2">
    <p>Tab 2 contents</p>
  </tab>
  <tab heading="Tab 3">
    <button class="btn btn-danger" ng-click="$parent.tabs[0].select()">Back to Tab 1</button>
  </tab>
</tabset>

如果有帮助,我有一个有效的 Plunker 示例

于 2014-11-11T22:24:09.677 回答