2016-09-30 66 views
0

我已经创建了一个自定义的Angular手风琴菜单。我有基本操作菜单打开和关闭。当我点击切换菜单时,我遇到了一个问题,我希望在切换菜单上添加的类可以被删除。 Here's an example切换手风琴班使用角度js

以下是一段代码。

<div class="frq-accordion"> 
    <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="frqToggle('hiddenToggleOne')" class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseOne" ng-class="{isHidden: hiddenToggleOne}" class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> 
    </div> 
    <!-- PANEL ENDS HERE --> 
</div> 
<!-- FRQ ACCORDION CONTAINER ENDS HERE --> 

<div class="frq-accordion"> 
    <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="frqToggle('hiddenToggleTwo')" class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseTwo" ng-class="{isHidden: hiddenToggleTwo}" class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> 
    </div> 
    <!-- PANEL ENDS HERE --> 
</div> 
<!-- FRQ ACCORDION CONTAINER ENDS HERE --> 

<div class="frq-accordion"> 
    <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="frqToggle('hiddenToggleThree')" class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseThree" ng-class="{isHidden: hiddenToggleThree}" class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> 
    </div> 
    <!-- PANEL ENDS HERE --> 
</div> 

ANGULAR

$scope.hiddenToggleOne = true; 
$scope.hiddenToggleTwo = false; 
$scope.hiddenToggleThree = false; 
$scope.hiddenToggleFour = false; 
$scope.hiddenToggleFive = false; 

$scope.frqToggle = function(toggleElem) { 
    $scope[toggleElem] = !$scope[toggleElem]; 
} 
+0

小提琴不起作用。我不认为你已经为你的JS文件添加了外部资源 –

回答

0

复位每一个布尔值 '假',你切换之前。

$scope.frqToggle = function(toggleElem) { 
    resetAllToFalse(); 
    $scope[toggleElem] = !$scope[toggleElem]; 
}; 

var resetAllToFalse = function(){ 
    $scope.hiddenToggleOne = false; 
    $scope.hiddenToggleTwo = false; 
    $scope.hiddenToggleThree = false; 
    $scope.hiddenToggleFour = false; 
    $scope.hiddenToggleFive = false; 
}; 

,或者你可以尝试不同的方法,因为这样,

在控制器上添加以下代码

​​

,并通过粘贴下面取代你的HTML

<div class="frq-accordion"> <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="changeActiveTabTo(1)” class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseOne" ng-show=“activeTab == 1” class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> </div> <!-- PANEL ENDS HERE --> </div> <!-- FRQ ACCORDION CONTAINER ENDS HERE --> 

<div class="frq-accordion"> <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="changeActiveTabTo(2)” class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseTwo" ng-show=“activeTab == 2” class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> </div> <!-- PANEL ENDS HERE --> </div> <!-- FRQ ACCORDION CONTAINER ENDS HERE --> 

<div class="frq-accordion"> <div class="panel panel-default"> 
    <!-- PANEL STARTS HERE--> 
    <div ng-click="changeActiveTabTo(3)” class="panel-heading"> 
     <div class="panel-title"> 
     <span>Some text goes here!</span> 
     </div> 
    </div> 
    <!-- PANEL HEADING ENDS HERE --> 
    <div id="collapseThree" ng-show=“activeTab == 3” class="panel-collapse"> 
     <p>Hidden menu is open</p> 
    </div> </div> <!-- PANEL ENDS HERE --> </div> 
+0

你可以重新格式化你的答案的最后一位,它很难阅读 – NewKidOnTheBlock

+0

用changeActiveTabTo(1)(基于选项卡的整数)替换所有frqToggle(hiddenToggle *)功能。而不是ng-class =“{isHidden:hiddenToggleThree}”,你可以编写ng-show =“activeTab == 1”(同样是基于选项卡的整数) – NewKidOnTheBlock

+0

在你提供的html中, 代替函数frqToggle ()通过changeActiveTabTo(tabIndex)。 (tabIndex是基于选项卡的1/2/3/4/5) 并替换 ng-class =“{isHidden:hiddenToggleThree}” ng-show =“activeTab == tabIndex”(tabIndex为整数1/2/3/4/5) –