Angularjs的Bootstrap选项卡

时间:2014-07-28 11:27:28

标签: angularjs tabs angular-ui-bootstrap

我正在使用一个tabset和一组角度ui bootstrap的不同选项卡。

我想点击某个标签。 此外,我想知道现在打开哪个标签。

我在服务中创建了一个名为currentTab的变量。

我的想法是当我点击标签时,当前标签会更新。 我可以在选项卡之间移动,但是,我在控制台中收到一条错误消息:“与指令”{1}“一起使用的表达式”{0}“是不可分配的!”

此外,我必须绘制不同的每个标签。

有什么想法吗?

 <tabset>
    <tab active="currentService.isCurrentTabEqualsGivenName('tab1')" ng-click="currentService.setCurrentTab('tab1')">
        <tab-heading><span class="badge">3</span>  <span>Tab 1</span>
        </tab-heading>

          SOMETHING
    </tab>
     <tab active="currentService.isCurrentTabEqualsGivenName('tab2')" ng-click="currentService.setCurrentTab('tab2')">
        <tab-heading>Tab 2</tab-heading>
          SOMETHING
         </tab>
 </tabset>

CurrentService:

 app.service('CurrentService', [
              function () {

 this.currentTab = "tab1";

 this.isCurrentTabEqualsGivenName = function(name){
        return this.currentTab === name;
    };

    this.setCurrentTab = function(name){
        if (this.currentTab !== name)
            this.currentTab = name;
    };
 }]);

1 个答案:

答案 0 :(得分:1)

这是Angular UI团队和社区的一个已知问题,请查看https://github.com/angular-ui/bootstrap/issues/611进行全面讨论。

对我有用的解决方案是@gilluminate在https://github.com/angular-ui/bootstrap/issues/611#issuecomment-70339233提供的解决方案

我在这里发布以供完整参考:

onEndPage()

然后设置默认选项卡,如下所示:

class ParagraphBorder extends PdfPageEventHelper {
    public boolean active = false;
    public void setActive(boolean active) {
        this.active = active;
    }

    public float offset = 5;
    public float startPosition;

    @Override
    public void onStartPage(PdfWriter writer, Document document) {
        startPosition = document.top();
    }

    @Override
    public void onParagraph(PdfWriter writer, Document document, float paragraphPosition) {
        this.startPosition = paragraphPosition;
    }

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        if (active) {
            PdfContentByte cb = writer.getDirectContentUnder();
            cb.rectangle(document.left(), document.bottom() - offset,
                document.right() - document.left(), startPosition - document.bottom());
            cb.stroke();
        }
    }

    @Override
    public void onParagraphEnd(PdfWriter writer, Document document, float paragraphPosition) {
        if (active) {
            PdfContentByte cb = writer.getDirectContentUnder();
            cb.rectangle(document.left(), paragraphPosition - offset,
                document.right() - document.left(), startPosition - paragraphPosition);
            cb.stroke();
        }
    }
}

<button class="btn" ng-click="activateTab('search')">Search</button> <button class="btn" ng-click="activateTab('preview')">Preview</button> <button class="btn" ng-click="activateTab('edit')">Edit</button> <tab heading="Search" active="active.search">...</tab> <tab heading="Preview" active="active.preview">...</tab> <tab heading="Edit" active="active.edit">...</tab> 函数:

$scope.active = {
  search: true
};