6

Bir akordeon grubunun açık olup olmadığını öğrenmek için bir yol var mı? IsOpen yönergesinin olduğunu biliyorum, ancak html'de iken bunun durumuna erişmenin bir yolu olup olmadığından emin değilim. İki yönlü bağlamayı kullanarak (ve kötüye kullanma?) Ben bu durumu tutmak için bir değişken ayarlayabilirsiniz ama oOpen0, isOpen1, isOpen2, vb gibi bir şey yapmadan iç içe akordeonlar için çalışmaz. Ayrıca "declare" için ng-init kullanabilirsiniz Yuvalanmış akordeonların kapsamına yeni bir açıklık var, ama bu iyi bir fikir gibi gelmiyor.Angularjs Akordeon Girişi isApen State

<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

cevap

11

İlk olarak, bir üst nesnenin like in Angular UI's docs' example örneğin status nesne kullanmak zorunda: Sonra

<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> 

, sen mükemmel iç içe akordiyon için aynı nesneyi adı kullanabilirsiniz . Nedeni basit: accordion-group yönergesi, her grup için yeni bir kapsam oluşturacaktır. Bu şekilde, status.isOpen değiştirildiği zaman, diğer grupları etkilemez.

Şunlara dikkat edin: http://plnkr.co/edit/nJ654pvE1itnGDQGp2rk?p=preview

+0

Harika bu şekilde çalışır. Bir ** ng-yineleme ** yinelemesinde, ilk elemanı açmak için 'ng-init =" status = {isOpen: $ first} "' ile bile değiştirebilirsiniz. –