因为我在这里无法回答我的问题: How can I open one accordion-group when I click to close another accordion-group? - 也许这是不可能的?
我一直在努力解决至少完成我想要做的事情。
这是我的手风琴:
<button class="panel accBtn" ng-click="status.isFirstOpen = !status.isFirstOpen;runThat()">Buildings<span class="caret"></span></button>
<accordion class="m3Details">
<accordion-group is-open="status.isFirstOpen" is-disabled="status.isFirstDisabled">
<accordion-heading><span class="noQuery">Building<span class="caret"></span></span></accordion-heading>
<li ng-repeat="y in m3Info" class="{{y.linkclass}}" ng-if="!y.offsite" ><a href="{{y.link}}" ng-click="clickLinks(y.initialOut,y.initialIn,y.backIn,y.backOut,y.name)"><img src="{{y.icon}}" width="15px" height="15px">{{y.name}}</a></li>
</accordion-group>
<accordion-group>
<accordion-heading><span ng-click="runThis()">Offsites<span class="caret"></span></span></accordion-heading>
<li ng-repeat="y in m3Info" class="{{y.linkclass}}" ng-if="y.offsite"><a href="{{y.link}}" ng-click="clickLinks(y.initialOut,y.initialIn,y.backIn,y.backOut,y.name)"><img src="{{y.icon}}" width="15px" height="15px">{{y.name}}</a></li>
</accordion-group>
</accordion>
第一个手风琴组开始禁用,这实际上是不必要的,因为我的标题文本无论如何都与类noQuery
不可见。然后,当我点击&#34; Offsites&#34;时,该组将打开,关闭&#34; Buildings&#34;名单。理想情况下,我希望&#34;建筑物&#34;当我关闭时会再次打开&#34; Offsites&#34;但由于这似乎不太可行,我已经决定让几个ng-click
提供不同的功能。
$scope.runThis = function(){
$('.accBtn').css('display','block');
$scope.status.isFirstDisabled;
};
$scope.runThat = function(){
$('.accBtn').css('display','none');
}
&#34;建筑物&#34;文字出现在&#34; Offsites&#34;点击,然后&#34;建筑物&#34;当&#34;建筑物&#34;点击。我仍然希望一个小组总是打开,所以我想禁用能够点击&#34; Offsites&#34;当它打开时,用户只能点击&#34; Buildings&#34;当它出现时。
但是,如果点击标题,我将如何以编程方式禁用手风琴?或者也许它会以某种约束方式完成?
答案 0 :(得分:3)
首先,使用角度时远离jquery!只有棱角分明,你的问题肯定是可以解决的。
其次,我假设您使用ui-bootstrap,因为您正在使用手风琴指令?
如果我理解正确,您希望一次只有一个组处于活动状态,因此您只能单击未打开的组并基本上切换组。我设置了一个简单的plunker来做到这一点。您必须使用is-disabled
指令中的accordion-group
属性,并使用ng-click
切换一些布尔值来执行此操作。