Here is the working demo.
Я добавил в настоящее время открыт emberAccordionItemView
к EmberAccordionComponent
. Я также добавил наблюдателя к emberAccordionItemView
, чтобы автоматически закрыть все, что не является openedItemView
.
App.EmberAccordionComponent = Ember.Component.extend({
openedItemView: null,
emberAccordionItemView: Ember.View.extend({
expanded: false,
autoClose: function() {
if(this.get('parentView.openedItemView') !== this) {
this.set('expanded', false);
}
}.observes('parentView.openedItemView')
})
....
Событие щелчок в EmberAccordionHeaderComponent
Теперь устанавливает openedItemView
к EmberAccordionComponent
App.EmberAccordionHeaderComponent = Ember.Component.extend({
classNames: ['ember-accordion-header'],
click: function() {
this.set('parentView.parentView.openedItemView', this.get('parentView'));
// here we toggle the emberAccordionItemView.expanded property
this.toggleProperty('parentView.expanded');
}
});
ИМХО это немного перебор, чтобы сделать компонент заголовок и тело, потому что создать отдельный вид и контроллеры для каждого. Я бы посоветовал вам вместо этого использовать частичные. – borisrorsvort