Angularjs Accordion Access isOpen State

o75abkj4  于 2023-10-15  发布在  Angular
关注(0)|答案(2)|浏览(122)

是否有办法访问 accordion 组是否打开?我知道有isOpen指令,但我不确定是否有一种方法可以在纯粹的html中访问它的状态。使用(和滥用?双向绑定我可以设置一个变量来保存这个状态,但是如果不做一些像isOpen 0,isOpen 1,isOpen 2等的事情,它就不能用于嵌套的 accordion 。我还可以使用ng-init在嵌套 accordion 的作用域上“声明”一个新的isOpen,但这听起来不是一个好主意。

<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

vatpfxk5

vatpfxk51#

首先,你必须使用一个父对象,就像Angular UI的docs示例中的status对象一样:

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

然后,你可以完美地使用相同的对象 * 名称 * 嵌套 accordion 。道理很简单:accordion-group指令将为每个组示例化一个新的作用域。这样,当status.isOpen被更改时,它不会影响其他组。
查看:http://plnkr.co/edit/nJ654pvE1itnGDQGp2rk?p=preview

lvjbypge

lvjbypge2#

你不需要创建一个对象。只需按以下方式创建一个变量:

<li uib-accordion-group ng-init="isOpen=true" is-open="isOpen">

相关问题