将默认选项卡设置为Angular.js选项卡

时间:2016-06-30 17:56:53

标签: javascript html angularjs tabs ng-class

我有一个Angular.js组件,其中包含一个标签列表。单击选项卡时,我为其分配ng-class(活动),以便突出显示。这工作正常,但我还希望第一个选项卡在用户第一次加载页面时成为默认活动选项卡,但是当我加载页面时没有突出显示任何内容。

这是我的组成部分:

'use strict';

angular.module('menuBar').component('menuBar', {
    templateUrl: 'menu-bar/menu-bar.template.html',
    controller: function menuBarController() {
        this.menus = [
            {
                name: 'Tab1'
            }, {
                name: 'Tab2'
            }, {
                name: 'Tab3'
            }, {
                name: 'Tab4'
            }, {
                name: 'Tab5'
            }
        ];

        this.tab = this.menus[0].name;

        this.setTab = function (tabId) {
            this.tab = tabId;
        }

        this.isSet = function (tabId) {
            return this.tab === tabId;
        }
    }
});

这是我的html模板:

<div class="navbar navbar-inverse navbar-collapse">
    <div class="container">   
        <ul class="nav nav-tabs">
            <li ng-repeat="menu in $ctrl.menus" ng-class="{active:tab.isSet(menu.name)}">
                <a href ng-click="tab.setTab(menu.name)">{{menu.name}}</a>
            </li>
        </ul>  
    </div>
</div>

这一行可能有问题,我试图设置我的默认标签?

this.tab = this.menus[0].name;

更新:添加了Plunker

Live preview here

2 个答案:

答案 0 :(得分:1)

 <div class="navbar navbar-inverse navbar-collapse">
<div class="container">   
    <ul class="nav nav-tabs">
        <li ng-repeat="menu in $ctrl.menus" ng-class="     active:menu.name==$ctrl.tab}">
            <a href ng-click="$ctrl.setTab(menu.name)">{{menu.name}}</a>
        </li>
    </ul>  
</div>

答案 1 :(得分:0)

您可以使用orderBy

  

功能:一个getter功能。将使用每个项目作为参数调用此函数,并将返回值用于排序。

我对语法不确定,因为我还没有使用过组件,但是其中包含了一些内容:

<div class="navbar navbar-inverse navbar-collapse">
    <div class="container">   
        <ul class="nav nav-tabs">
            <li ng-repeat="menu in $ctrl.menus | orderBy: $ctrl.isSet(tab.id)" ng-class="{active:tab.isSet(menu.name)}">
                <a href ng-click="tab.setTab(menu.name)">{{menu.name}}</a>
            </li>
        </ul>  
    </div>
</div>