Плагин свертывания Angular-Strap, открывающий более одной панели одновременно (?)

Привет, ребята, это плагин http://mgcrea.github.io/angular-strap/

Я пытаюсь использовать этот плагин в своем приложении, но не делаю то, что я хочу, я хочу использовать его более динамично, как вы можете видеть в примере на веб-странице, вы можете иметь только одну открытую панель одновременно, и я хочу дать пользователям возможность открывать столько панелей, сколько они хотят, и это мой HTML:

  <div class="panel-group" ng-model="panels.activePanel" bs-collapse>
    <div class="panel panel-default"
      ng-repeat="sport in sports" ng-show="sport.leagues.length">
      <div class="panel-heading"
        bs-collapse-toggle
        ng-click="addSportToLines(sport)">
        <h4 class="panel-title">
          <a>
            {{::sport.name }}
          </a>
          <span class="pull-right badge">{{::sport.leagues.length }}</span>
        </h4>
      </div>
      <div class="panel-collapse" bs-collapse-target>
        <div class="panel panel-default">
            <div class="list-group">
              <a href="javascript:void(0);"
              class="list-group-item panel-padding"
              ng-repeat="league in sport.leagues"
              ng-class="{active: league.active}"
              ng-click="addLeagueToLines(league)">{{:: league.name }}</a>
            </div>
          </div>

Есть ли способ сделать это или мне нужно использовать другой инструмент?

1 ответ

Решение

Если вы посмотрите на исходный код элемента управления свертыванием угловой ленты, вы заметите эту функцию внутри контроллера:

self.$setActive = $scope.$setActive = function(value) {
    if(!self.$options.disallowToggle) {
        self.$targets.$active = self.$targets.$active === value ? -1 : value;
    } else {
        self.$targets.$active = value;
    }
    self.$viewChangeListeners.forEach(function(fn) {
        fn();
    });
};

Как вы видете $targets.$active это одно значение, означающее, что директива учитывает только одну панель, открытую одновременно. Чтобы изменить функциональность директивы, вам придется ее раскошелиться и внести необходимые изменения.

Я бы посмотрел на мой ответ на ваш подобный вопрос как лучший подход. Вам не нужна библиотека / плагин, чтобы получить результат, который вы ищете. См.: /questions/34649607/angularjs-mne-nuzhen-akkordeon-s-vozmozhnostyu-odnovremennogo-otkryitiya-neskolkih-panelej/34649615#34649615

Другие вопросы по тегам