2015-03-23 2 views
1

Я хочу, чтобы пользователь мог нажать кнопку «Далее», чтобы перейти к следующей вкладке.AngularJS & BootstrapUI: вкладка переключателя только работает один раз

Это пораженный HTML (я фактически лишен все и проверил его, но он все еще работает только один раз):

<body> 
    <div class="container" id="container"> 
     <form name="orderBrochures" novalidate> 
      <div ng-controller="TabController as tabCtrl"> 
       <tabset justified="true"> 
        <tab heading="Prospektauswahl" class="tabHeading" ng-controller="OptionController as optionCtrl" active="optionsTab"> 


         <div class="row"> 
          <div class="col-md-12 col-xs-12 col-sm-12"> 
           <button class="btn btn-default btn-block" ng-click="next()">Weiter</button> 
          </div> 
         </div> 

         <br> 
        </tab> 

        <tab heading="Pers&ouml;nliche Angaben" class="tabHeading" active="personDetailsTab" id="personDetailsTab"> 

        </tab> 
       </tabset> 
      </div> 

     </form> 
    </div> 
</body> 

И это связанная с этим TabController:

(function() { 
    var app = angular.module('orderBrochures', ['ui.bootstrap']); 

    app.controller('TabController', ['$scope', '$location', '$anchorScroll', function($scope, $location, $anchorScroll) { 
     $scope.next = function() { 
      $scope.personDetailsTab = true; 

      $location.hash('personDetailsTab'); 
      $anchorScroll(); 
     } 
    }]); 
})(); 

В первый раз, когда я нажимаю кнопку, все работает нормально. Во второй раз, когда я нажму, он просто прокрутит, он не изменит вкладку.

Я проверил код примера на Bootstrap (прокрутите вниз до «Вкладки»), но я не могу найти, что я делаю неправильно.

+0

Это связано с описанием прототипа наследования, описанным здесь (https://github.com/angular/angular.js/wiki/Understanding-Scopes) –

ответ

1

Мне удалось выяснить, что случилось, хотя я не понимаю, почему. Если вы используете переменную $scope как значение для active, она только обнаружит изменение выражения один раз.

Однако, если я использую атрибут контроллера (например, tabCtrl.personDetailsTab), он каждый раз обнаруживает изменение значения.

Смежные вопросы