2016-05-30 96 views

回答

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> 

你不需要控制器用于此目的,它可以直接使用处理指令 Plunker Demo

+0

当您显示第二个div时,您可以添加动画吗?试图添加CSS,但它并没有帮助我。 – kipris

+0

感谢致谢+1 – etee

+0

尝试使用ngAnimate访问此处:https://docs.angularjs.org/api/ngAnimate – etee

0

而不是重新发明车轮,使用ui bootstrapaccordion指令。它有很多自定义选项。

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

对不起,但我有太多与其他人相冲突的角色插件。所以我不能使用ui bootstrap。 – kipris

0

这里是一个解决您的当你使用ng-repeat进行工作时,通常会遇到问题TE在类函数的arrray

[http://plnkr.co/edit/gBJPcFNIgUTWo5gdZzUb?p=preview`]的$索引值[1]

// JS

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

//,而在HTML简单的切换CLASS

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