2016-09-30 2 views
0

Я создал пользовательское меню углового аккордеона. У меня есть основы, открывающие и закрывающие меню. Одна проблема, которую я получаю, когда я нажимаю на меню переключения два, я хочу, чтобы добавленный класс переключился в одно меню, которое нужно удалить. 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; 
}; 

или, вы можете попробовать другой подход как таковой,

В контроллере добавьте следующий код

$scope.activeTab = 1; 

$scope.changeActiveTabTo = function(tabIndex){ 
    $scope.activeTab = tabIndex; 
} 

и заменить 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

Замените все frqToggle (hiddenToggle *) на changeActiveTabTo (1) (целое на основе вкладки) функция. И вместо 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 на основе вкладки) –

Смежные вопросы