【发布时间】:2017-01-07 13:02:41
【问题描述】:
当 ui.bootstrap.accordion 中的所有选项卡都关闭时,如何更改 css 类,例如,如果选项卡因为另一个选项卡触发它们关闭而关闭,则 ng-class 表达式将不会运行并获胜' t 改变图标。
这是风景
<uib-accordion>
<uib-accordion-group ng-repeat="item in portafolio | orderBy : 'order' " ng-click="item.opened=!item.opened">
<uib-accordion-heading>
<i class="fa fa-lg" ng-class="(item.opened === true) ? 'fa-minus-circle':'fa-plus-circle'"></i>
<span>{{item.name}}</span>
<i class="pull-right fa fa-lg" ng-class="{'fa-caret-down': true === item.opened, 'fa-caret-right': false === item.opened}"></i>
</uib-accordion-heading>
<div ng-include="'modules/widgets/portafolio/tpl/'+item.type+'.html'"></div>
</uib-accordion-group>
</uib-accordion>
在控制器中我有这个。
$scope.portfolio = [
{ type: 'Balance', order:1, name:'current balance', opened: false},
{ type: 'Credits', order:2, name:'Credits', opened: false},
{ type: 'Investments', order:3, name:'Investments', opened: false}
];
我尝试使用 ng-class 指令来评估 item.opened 是真还是假,但是当标签因为另一个标签关闭而关闭时,item.opened 不会更新。
确实,我研究过使用 $watch 我可以“监视”更改并运行一个函数,我看到当我单击一个选项卡时,会添加一个 css 类 '.panel-open',但是如何我观察了添加了 css 类以更新 i 类元素的 div 元素。
谢谢。
【问题讨论】:
-
您可以使用
$watch接受一个函数,该函数将测试是否所有面板都已关闭,您可以发布到目前为止所做的事情吗? -
谢谢兄弟,我已经用代码更新了问题
标签: angular-ui-bootstrap angular-bootstrap