Создание необработанного HTML-компонента в Ember 2.0

Я пытаюсь сделать руководство по дизайну, где я показываю код в виде HTML или CSS.

Насколько я понимаю, я должен делать компонент, потому что я могу использовать {{yield}}, чтобы код отображался, как показано ниже.

Использование:

{{#raw-output}}
  <div>test</div>
{{/raw-output}}

компоненты / сырье-output.hbs:

<pre>
<code>
    {{{yield}}}
</code>
</pre>

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

РЕДАКТИРОВАТЬ: конечный продукт

//raw-output.js
import Ember from 'ember';

export default Ember.Component.extend({
    didInsertElement: function () {
        var $element = $(this.get('element')), 
        $code = $("code", $element), 
        html = $code.html();
        $code.empty().text(html);
    }
 });

//raw-output.hbs

<code>
    {{{yield}}}
</code>


//usage
{{#raw-output}}
    <div>name</div> 
{{/raw-output}}

3 ответа

Решение

Вы можете использовать его так же, как вы упомянули. в didInsertElement вашего компонента, получить строки кода, escape их, а затем показать сбежавшие линии.

Рабочий пример: Twiddle

Использование:

{{raw-output model='<div style="background: red">test</div>'}}

компоненты / сырье-output.hbs:

<pre>
<code>
    {{model}}
</code>
</pre>

Вам не нужно использовать yield, Используйте обычное свойство, как model,

Как вариант попробуйте дополнение https://github.com/ef4/ember-code-snippet.

Это компонент Ember (и дополнение ember-cli), который позволяет вам отображать фрагменты кода в вашем приложении. Фрагменты кода могут жить в своих собственных выделенных файлах, или вы можете извлекать блоки кода из самого приложения. Особенности:

  • подсветка синтаксиса.
  • Автоматическая перезагрузка ember-cli примет изменения в любом из файлов сниппета.
  • Компонент использует расширения файлов, чтобы помочь highlight.js угадать правильный язык.

Например, этот аддон используется в демонстрационной таблице addepar/ember-table.

Другие вопросы по тегам