2015-04-16 7 views
1

Я пытаюсь создать компонент выпадающего типа, который может иметь некоторую разметку для заголовка, а затем при наведении указателя мыши открывается больше разметки. Что-то вроде этого:В Ember я могу передать разметку компоненту?

{{#dropdown-menu}} 

    {{#dropdown-header}} 
     <span>My Custom Title markup</span> 
    {{/dropdown-header}} 

    {{#dropdown-body}} 
     list of menu items 
    {{/dropdown-body}} 

{{/dropdown-menu}} 

Тело должно отображаться только в том случае, когда свойство, такое как isExpanded, является истинным. Но если щелкнуть тело, isExpanded станет ложным.

Я могу создать рабочий компонент, который принимает свойство title (строка), но я не могу понять, как сделать заголовок включением пользовательской разметки.

ответ

2

Вы можете поместить yield в свой компонент в блок if. посмотреть jsbin

компонент: шаблон

App.TestShowComponent = Ember.Component.extend({ 
    layoutName: "components/test-show", 
    expanded: false, 
    actions: { 
    toggle: function() { 
     this.set('expanded', !this.get('expanded')); 
    } 
    } 
}); 

индекс:

{{#test-show}} 
    inner stuff 
{{/test-show}} 

шаблон компонента:

<button {{action 'toggle'}}>toggle</button> 
{{#if expanded}} 
    {{yield}} 
{{/if}} 
+0

Можно ли иметь все функциональные возможности, содержащиеся в компоненте? Если бы я захотел наложить кучу этих компонентов на страницу, на самом деле не было бы функциональности в контроллере. – MikeJerome

+0

Конечно, просто переместите действие и переменную в компонент. – albertjan

+0

Я обновил ответ – albertjan

Смежные вопросы