2016-05-30 98 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" >