2016-05-30 11 views

Antwort

1
<body ng-controller="Ctrl"> 
    <div ng-repeat="item in items"> 
     <div class="accordion" ng-click="show=show==true? false:true;"> 
     {{item.id}} 
     </div> 
     <div class="repeated-item" ng-model="accordionContent" ng-show="show"> 
     {{item.name}} 
     </div> 
    </div> 
    </body> 

Sie brauchen keine Steuerung für diesen Zweck, kann es direkt mit Richtlinien Plunker Demo

+0

Können Sie Animationen hinzufügen, wenn das 2. Div angezeigt wird? Versucht, CSS hinzuzufügen, aber es hat mir nicht geholfen. – kipris

+0

Danke für die +1 Abstimmung – etee

+0

Versuchen Sie, dass mit ngAnimate besuchen Sie hier: https: //docs.angularjs.org/api/ngAnimate – etee

0

Statt neu zu erfinden das Rad, ui bootstrap ‚s accordion Direktive verwenden. Es kommt mit vielen Optionen für die Anpassung.

angular.module('ui.bootstrap.demo', ['ngAnimate', 'ui.bootstrap']); 
 
angular.module('ui.bootstrap.demo').controller('AccordionDemoCtrl', function($scope) { 
 
    $scope.oneAtATime = true; 
 
    $scope.isFirstOpen = true; 
 
});
<link href="//netdna.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular-animate.js"></script> 
 
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.3.3.js"></script> 
 
<script src="example.js"></script> 
 

 
<div ng-app="ui.bootstrap.demo" ng-controller="AccordionDemoCtrl"> 
 
    <uib-accordion close-others="oneAtATime"> 
 
    <uib-accordion-group heading="Static Header, initially expanded" is-open="isFirstOpen"> 
 
     This content is straight in the template. 
 
    </uib-accordion-group> 
 
    <uib-accordion-group heading="Another Static Header"> 
 
     This content is straight in the template. 
 
    </uib-accordion-group> 
 
    </uib-accordion> 
 
</div>

official plunker demo

+0

Entschuldigung , aber ich habe zu viele eckige Plugins, die mit anderen kollidieren. So kann ich nicht ui Bootstrap verwenden. – kipris

0

hier behandelt werden soll, eine Lösung für Ihre Problem in der Regel, wenn Sie mit ng-wiederholen Sie könnten manipulieren te in Ihrem fucntions $ Indexwert Ihrer arrray

[http://plnkr.co/edit/gBJPcFNIgUTWo5gdZzUb?p=preview `] [1]

// JS

$scope.toggle = function($index) { 
    $scope.index = $index; 
}; 

// UND IN HTML einfache Umschaltfunktion CLASS

<div class="repeated-item" data-ng-class="{'open-accordion' : index === $index}" ng-model="accordionContent" >