代码之家  ›  专栏  ›  技术社区  ›  Laziale

AngularJS引导选项卡在第一次后不会动态更改

  •  0
  • Laziale  · 技术社区  · 5 年前
    <ul class="nav nav-tabs nav-tabs-simple" role="tablist">
      <li class="nav-item">
        <a href="#" ng-class="{active: activeTab =='a'}" data-toggle="tab" role="tab" data-target="#atab">A</a>
      </li>
      <li class="nav-item">
        <a href="#" ng-class="{active: activeTab =='b'}"  data-toggle="tab" role="tab" data-target="#btab">B</a>
      </li>
      <li class="nav-item">
        <a href="#" ng-class="{active: activeTab =='c'}" data-toggle="tab" role="tab" data-target="#ctab">C</a>
      </li>
    </ul>
    

    然后是实际选项卡:

    <div class="tab-pane" ng-class="{'active': activeTab =='main'}" id="atab">
    </div>
    <div class="tab-pane" ng-class="{'active': activeTab =='main'}" id="btab">
    </div>
    <div class="tab-pane" ng-class="{'active': activeTab =='main'}" id="ctab">
    </div>
    

    所以这对我来说是第一次,我可以通过编程切换到第二个选项卡:

    $scope.activetab='b';

    但当我手动返回到选项卡“a”并触发调用相同函数的命令时,活动类仍保留在第一个选项卡上,并且不会以编程方式更改。

    所以,我想知道我做错了什么,为什么我只能第一次导航,但之后就不能了。

    1 回复  |  直到 5 年前
        1
  •  0
  •   Pop-A-Stash    5 年前

    首先,活动类应该应用于 li 元素,而不是 a 锚标签。而且,你已经把你所有的 div S激活时间 activeTab 是“主”,而不是相应的字母:

    <li class="nav-item" ng-class="{active: activeTab =='a'}">
      <a href="#" data-toggle="tab" role="tab" data-target="#atab">A</a>
    </li>
    
    <div class="tab-pane" ng-class="{'active': activeTab =='a'}" id="atab">
    </div>
    <div class="tab-pane" ng-class="{'active': activeTab =='b'}" id="btab">
    </div>
    <div class="tab-pane" ng-class="{'active': activeTab =='c'}" id="ctab">
    </div>
    

    其次,纯引导的选项卡功能使用jquery来更改类。jquery完全在AngularJS的“摘要循环”之外运行。这意味着AngularJS无法控制或了解单击选项卡标题时发生的事情。这将导致一些意想不到的行为。

    这就是为什么创建这个库是为了充分利用引导和AngularJS集成: https://angular-ui.github.io/bootstrap/#!#tabs

    下面是一个半工作的代码示例,说明了jquery/angularjs摘要循环问题: https://plnkr.co/edit/tBgvPjJ9HVvSj1SIrWhG?p=preview