以编程方式单击以更改UI-Bootstrap中的当前选项卡

时间:2015-06-17 09:25:26

标签: angularjs twitter-bootstrap angular-ui angular-ui-bootstrap

我想以编程方式激活标签但无法找到方法。

这是plunker。 HTML:

<tabset>
<tab id="a1" heading="Static 1">Static 111</tab>
<tab id="a2" heading="Static 2" ng-attr-active="{{nd}}">Static 222</tab>
</tabset>

JS:

$scope.nd = true;

ps:“标签及其内容不应在js文件中定义”。

2 个答案:

答案 0 :(得分:8)

我刚刚在类似的路线上努力争取。事实上,我几乎错误地得出结论,静态选项卡不能以编程方式更改。但他们可以。

 <tabset>
        <tab heading="Tab 1"  ng-attr-active="tabs[0].active">
              Tab 1 content
        </tab>
        <tab heading="Tab 2"  ng-attr-active="tabs[1].active">
              Tab 2 content
        </tab>
        <tab heading="Tab 3"  ng-attr-active="tabs[2].active">
              Tab 3 content
        </tab>
 </tabset>
 <button ng-click="make_tab3_active()">Make Tab 3 Active </button>

在Javascript中你需要

$scope.tabs = [{active: true}, {active: false}, {active: false}];
$scope.make_tab3_active = function() {
    $scope.tabs[2].active = true;
}

所以只是要指出 - 单个变量不会这样做。它们应该在一个数组中 - 如上所述。尽管文档在类似的行上给出了一个示例,但它并不清楚,因为2个静态选项卡上没有活动,这可能会让您感到困惑。

我花了很多时间才找到这个帖子的答案:https://github.com/angular-ui/bootstrap/issues/611

答案 1 :(得分:1)

        $scope.st = true;
        $scope.nd = false;

       $scope.goToSecond= function () {
            $scope.st = false;
            $scope.nd = true;
        };
        $scope.goToFirst= function () {
            $scope.nd = false;
            $scope.st = true;
        };

,其中

<tabset>
 <tab heading="Static title" ng-attr-active="st">"; </tab>
 <tab heading="Static 2" ng-attr-active="nd">"; </tab>
</tabset>