我有一个带有"chevron"图标的手风琴,点击时切换为指向上或下,这是通过 ng-click
和 ng-class
完成的 . 手风琴只允许一个面板同时打开 - 所以当我点击一个关闭的面板时,打开的面板关闭 . 但是如何在打开的面板上切换V形图标,并用 ng-click
关闭?
最初我可以用DOM操作等来做,但由于这是角度的局部视图我不能这样做 .
码:
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" ng-click="firstpaneisopen=!firstpaneisopen">
<i class="glyphicon" ng-class="{'glyphicon-chevron-up': firstpaneisopen, 'glyphicon-chevron-down': !firstpaneisopen}"></i> Collapsible Group Item #1
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
Body
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" ng-click="secondpaneisopen=!secondpaneisopen>
<i class="glyphicon" ng-class="{'glyphicon-chevron-up': secondpaneisopen, 'glyphicon-chevron-down': !secondpaneisopen}"></i> Collapsible Group Item #2
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse">
<div class="panel-body">
Body
</div>
</div>
</div>
</div>
6 回答
我建议您从AngularUI团队查看“UI Bootstrap” . 它是“用纯AngularJS编写的Bootstrap组件”的集合 .
http://angular-ui.github.io/bootstrap/
他们的网站上有一个示例,显示他们的Accordion指令使用
ng-class
来切换V形图标 .http://angular-ui.github.io/bootstrap/#/accordion
他们的指令还具有
close-others
属性,如果该属性为真,则确保在任何时候只打开一个面板 .这是我尝试过的,它似乎工作
在我的控制器中我有
在我的HTML中我有
How about working with CSS? Bootstrap在具有
data-toggle="collapse"
的html
元素上添加了一个类collapsed
. 幻灯片打开后,它将删除此collapsed
类 . 然后我们可以使用css
来旋转span
元素(具有data-toggle
属性的元素的子元素) .IMPORTANT NOTE :确保将 collapsed 类添加到具有
data-toggle="collapse"
属性的元素,以使其顺利运行 . 否则,在初始加载元素时,span
元素第一次不会按预期旋转 .做了一些研究,当它切换打开时,我能够使用this method将类
open
添加到panel-header
. 这个示例允许打开多个面板并使用Angular Strap Collapse .模板:
控制器中的JS:
我想过的最简单的解决方案 . 而不是使用任何控制器,
你可以像我一样写作 .
经过一些研究,我有一种方法可以解决这个问题 .
JS:
在第一个窗格上修改了ng-click:
反之亦然在第二个窗格上 .
我不认为这是任何优雅的解决方案,特别是如果我们有两个以上的窗格,但它的工作原理 .