Как закрыть другой аккордеон в угловых js

0

В приведенном ниже коде я использую функцию переключения, которая работает правильно, но я хочу закрыть другие соответственно, когда один открыт

 <div class="listing_cat" ng-controller="categoryCtrl">                
             <ul>
              <li class="mob_main_cat" ng-repeat="x in categories" ng-click="toggleCustom($index, $event)" >
                 <span class="cat_left"> {{x.category}}</span>  <span class="cat_right"><i class="fa fa-plus"></i></span>
                 <div class="clearfix"></div>  
                 <ul class="mob_sub_cat" ng-show="custom[$index]">
                   <li class="head">View all in Education</li>
                   <li ng-repeat="x in subcategories"><a href="#">{{x.subcategory}}</a></li>

                 </ul>               
               </li>               

             </ul>
            </div>

<script>
$scope.custom = [];     
    $scope.toggleCustom = function(obj,event) { 
      event.stopPropagation(); 
            $scope.custom[obj] = !$scope.custom[obj];                       
        };
</script>

http://jsfiddle.net/U3pVM/16884/

Выше моя ссылка jsfiddle, в которой я хочу закрыть другую, когда кто-либо щелкнут

Теги:

1 ответ

1

Обновите свою скрипку с помощью решения:

http://jsfiddle.net/4m92fsqy/

контроллер:

$scope.toggleCustom = function (obj, event) {
    event.stopPropagation();
    var temp = $scope.categories[obj].shown
    for (var i=0; i < $scope.categories.length; i++) {
        $scope.categories[i].shown = false;
    }
    $scope.categories[obj].shown = !temp;
};

HTML:

<ul class="mob_sub_cat" ng-show="categories[$index].shown">

Должно быть достаточно просто :)

  • 0
    Спасибо большое. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню