Привет, ребята! Я работал с компонентом аккордеона ember-boostrap и решил поделиться с вами тем, как я создал функциональность открытия/закрытия всех аккордеонов в моем веб-приложении.

// js
import Ember from 'ember';
export default Ember.Component.extend({
  toggleCollapsed: false,
  actions: {
    toggleAllAccordions() {
      this.toggleProperty('toggleCollapsed')
    }
  }
});
// html
<div class="accordion-container">
   <button {{action 'toggleAllAccordions'}}>Toggle Menus</button>
<div>
     {{#bs-accordion as |acc|}}
       {{#acc.item value="1" as |aitem|}}
         {{#aitem.title}}
           title goes here
         {{/aitem.title}}
         {{#aitem.body collapsed=toggleCollapsed}}
           body goes here
         {{/aitem.body}}
       {{/acc.item}}
       
        {{#acc.item value="2" as |aitem|}}
         {{#aitem.title}}
           title goes here
         {{/aitem.title}}
         {{#aitem.body collapsed=toggleCollapsed}}
           body goes here
         {{/aitem.body}}
       {{/acc.item}}
       
       and more accItems can go here
       
     {{/bs-accordion}}
 </div>
</div>

Итак, у нас есть компонент и его шаблон. Ничего фантастического. Давайте более подробно рассмотрим файл шаблона. У нас есть только кнопка, которая вызовет наш toggleAllAccordions, чтобы вызвать открытие и закрытие аккордеонов, которые вы увидите на своей веб-странице. Затем у вас есть возможность использовать для рендеринга аккордеонов ember-bootstrap.

Здесь важно отметить, что я разделил aitem.title и aitem.body из bs-accordion, потому что мы хотим дать aitem.body свойство, называемое свернутым, которое будет меняться в зависимости от нашей кнопки. Документация по этому поводу находится здесь. Без этого вам пришлось бы присвоить каждому элементу аккордеона одно и то же свойство value, но мы можем не захотеть этого во всех случаях.