UI Bootstrap аккордеон - стрелка вниз внутри ng-repeat

0

Я хочу, чтобы моя стрелка указывала вниз, когда аккордеон открыт. Когда я использую ng-repeat is-open = "status.open" применяется к каждому аккордеон. Это создает проблему, когда is-open = "status.open" применяется ко всем аккордеонам. Мне нужен каждый аккордеон, чтобы иметь уникальную ценность. EG: open1, open2, open3

Как получить мой ng-repeat, чтобы добавить уникальное значение для каждого аккордеона?

Plunker: http://plnkr.co/edit/veFWTHuWIn2YpfgHqGMC?p=preview

<div uib-accordion-group class="panel-default" ng-repeat="group in groups" is-open="status.open">
  <uib-accordion-heading>
    {{group.title}} <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
  </uib-accordion-heading>
  {{group.content}}
</div>
  • 1
    Вы пробовали вместо этого is-open = "status.open [$ index]"? ( plnkr.co/edit/YVD2c9gzjnwzwO7XeWiZ?p=preview )
  • 0
    Мне нравится, как это читается в коде. Я использовал это для моего окончательного решения.
Теги:
angular-ui-bootstrap

1 ответ

1
Лучший ответ

Вы используете одну и ту же переменную статуса (status.open) для статуса открытия/закрытия всех групп аккордеона. Поэтому, если кто-то открыт, другие будут открываться, потому что статус тот же. Чтобы решить эту проблему, сделайте переменную статуса частью свойства объекта ng-repeat.

<div uib-accordion-group class="panel-default" ng-repeat="group in groups" is-open="group.open">
  <uib-accordion-heading>
    {{group.title}} <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': group.open, 'glyphicon-chevron-right': !group.open}"></i>
  </uib-accordion-heading>
  {{group.content}}
</div>

Вот обновленный плункер.

Или, как предложил Laloutre в комментариях, вы можете использовать is-open = "status.open [$ index]", если вы не хотите, чтобы переменная статуса была как свойство объекта ng-repeat.

Ещё вопросы

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