Search code examples
angularjstwitter-bootstraptoggleaccordion

Bootstrap collapse not collapsing back


I have a page where I have included the (Twitter) bootstrap. On this page I have a prefectly working accordion and within that accordion I have a collapsable div. See the code below:

<div class="accordion" id="checkListAccordion">
<div ng-repeat="item in items" class="accordion-group">
    <div class="accordion-heading">
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#checkListAccordion" href="#collapse{{item.$$hashKey}}">{{item.name}}</a>     
    </div>
    <div id="collapse{{item.$$hashKey}}" class="accordion-body collapse">
        <div class="accordion-inner">
            <div class="container-fluid">
                <div class="row-fluid">
                    <div class="badges span12">
                        <span class="badge badge-info" data-toggle="collapse" data-target=".info{{item.$$hashKey}}"><i class="icon-info-sign icon-white"></i></span>
                        <div class="info{{item.$$hashKey}} collapse in">
                            {{item.info}}
                        </div>
                    </div>
                </div>
                <div class="row-fluid">
                    <div class="span12">
                       some text
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Now, when I click the info badge, the div with the corresponding class is folding open. But it never folds back when I click it again. Only when I wrap in in a navbar and navbar-inner, it folds back....but of course, I don't want that.

Any help on this?


Solution

  • When i add a controler to your code all seems to work as expected:

    angular.module('plunker',[]);
    function AccordionDemoCtrl($scope) {
      $scope.oneAtATime = true;
    
      $scope.items = [
        {
          name: "Dynamic Group Header - 1",
          info: "Dynamic Group Body - 1"
        },
        {
          name: "Dynamic Group Header - 2",
          info: "Dynamic Group Body - 2"
        }
      ];
    
    
    }
    

    See also: http://plnkr.co/nX4kvMThA0bYwcbXZS7t May be there will be a problem with the versions you use? I used jQuery 1.9.1, Twitter Bootstrap 2.3.1 and angularJS 1.0.7 (see: Angular JS Bootstrap Accordian Example).

    btw have you consider to use UI Bootstrap (http://angular-ui.github.io/bootstrap/) see: http://plnkr.co/u7l6nrkPZM8ZJtA08RNP (thanks to winkerVSbecks who answered Howto set template variables in Angular UI Bootstrap? (accordion))