2015-03-26 3 views
1

У меня гармошка:Открытые угловой UI-самозагрузка аккордеона на основе ID

<accordion> 
<accordion-group ng-repeat="group in groups" heading="{{group.title}}" id="{{group.id}}" is-open="group.open"> 
    <table class="table">    
     <tr> 
     <td>{{group.definition}}</td> 
     </tr> 
    </table> 
</accordion-group> 
</accordion> 

и каждый аккордеон имеет уникальный идентификатор.

Я знаю, как открыть аккордеон на основе его позиции:

<button ng-click="groups[0].open = !groups[0].open">Toggle Title 1 based on index</button> 

, но как я могу открыть аккордеон на основе его ID?

Моя текущая попытки здесь: http://plnkr.co/edit/c3GeaWfOgZ2YoQb2kUbW

+0

Вы не делаете. Все это контролируется связыванием 'is-open'. – Phil

+0

@Phil, как я могу привязать идентификатор (или что-то уникальное) к is-open? Я ищу что-то вроде: 'is-open =" {{group.id}}. Open "' – rlsaj

+0

Я бы использовал карту или что-то в этом роде, например '$ scope.openGroups = {}' и 'is-open = "openGroups [group.id]" ' – Phil

ответ

1

Исходя из моего комментария, попробовать что-то вроде этого ...

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

$scope.accordionGroups = {}; 

Если вы хотите, чтобы одна группа по умолчанию открыта, попробуйте это

$scope.accordionGroups[groups[0].id] = true; 

Затем используйте это в шаблоне

<accordion-group ng-repeat="group in groups" 
    heading="{{group.title}}" id="{{group.id}}" 
    is-open="accordionGroups[group.id]"> 

Для переключения группы с кнопкой, используйте этот

<button ng-click="accordionGroups.title1 = !accordionGroups.title1">Toggle title1</button> 

Plunker

+0

блестящий, решил мою проблему сразу. – rlsaj

+0

@ rlsaj еще одним вариантом было бы создание функции контроллера для поиска группы по идентификатору в массиве и установки ее свойства 'open' на' true', но я чувствую, что это проще – Phil

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