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