6

Czy istnieje sposób dostępu do grupy akordeonów, czy jest otwarta? Wiem, że istnieje dyrektywa isOpen, ale nie jestem pewien, czy istnieje sposób, aby uzyskać dostęp do stanu tego, podczas gdy czysto w html. Używając dwukierunkowego wiązania mogę ustawić zmienną, aby utrzymać ten stan, ale nie będzie działać dla zagnieżdżonych akordeonów bez robienia czegoś takiego jak isOpen0, isOpen1, isOpen2, itd. Mogę również użyć ng-init do "zadeklarowania" nowy jest otwarty na zakres zagnieżdżonych akordeonów, ale to nie brzmi jak dobry pomysł.Dostęp do akordeonu Angularjs to otwarte państwo

<accordion> 
    <accordion-group is-open="isOpen"> 
     <accordion-heading> 
     <div ng-class="{'myClass': isOpen}">Static Text</div> 
     </accordion-heading> 
     This content is straight in the template. 
    </accordion-group> 
    </accordion> 

http://plnkr.co/edit/l5y4raei99pedNWcE225

Odpowiedz

11

Po pierwsze, trzeba użyć obiektu nadrzędnego like in Angular UI's docs' example, status obiekt na przykład:

<div accordion-group="" ng-init="status = {isOpen: false}" is-open="status.isOpen"> 
     <div accordion-heading=""> 
      <div ng-class="{'is-open': status.isOpen}">NUTRIENT PROFILES</div> 
     </div> 
     ... 
    </div> 

Następnie można doskonale wykorzystać ten sam obiekt nazwa dla zagnieżdżonego akordeon . Powód jest prosty: dyrektywa accordion-group stworzy nowy zakres dla każdej grupy. W ten sposób, gdy zmieni się status.isOpen, nie wpłynie to na inne grupy.

Sprawdź: http://plnkr.co/edit/nJ654pvE1itnGDQGp2rk?p=preview

+0

Świetnie to działa w ten sposób. W ** powtórzeniu ** powtórzyć ** można nawet zastąpić przez 'ng-init =" status = {isOpen: $ first} "', aby otworzyć pierwszy element. –

Powiązane problemy