Вскрытие создает неправильный вывод

Я использую следующий пример: HTML:

   <markdown>
# Hello World!
- Zeppelin
- That guy
- Kronos
    </markdown>

директива:

.directive('markdown', function($window) {
    var converter = new $window.Showdown.converter();
    return {
        restrict: 'E',
        link: function(scope, element, attrs) {
            var htmlText = converter.makeHtml(element.text());
            element.html(htmlText);
        }
    }

Вы можете увидеть пример того, как это должно работать в jsFiddle: http://jsfiddle.net/8bENp/267/(вот откуда я это взял)

Но в моем проекте линия "element.html(htmlText)"не возвращает нужный HTML со списками, а просто переносит"<pre> а также <code>вместо этого. Так что результат таков:

<markdown><pre><code>                            # Hello World!
                            - Zeppelin
                            - That guy
                            - Kronos
</code></pre></markdown>

но должно быть

<markdown><h1 id="helloworld">Hello World!</h1>

<ul>
<li>Zeppelin</li>
<li>That guy</li>
<li>Kronos</li>
</ul></markdown>

Я включил точно такой же файл вскрытия:

http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js

Модули в моем приложении:

'ui.bootstrap',
    'frapontillo.bootstrap-switch',
    'angulartics',
    'angulartics.google.analytics',
    'uiGmapgoogle-maps'

Есть идеи, что может вызвать такое поведение? Любая известная несовместимость с одним из моих других модулей?

1 ответ

Решение

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я текущий руководитель проекта Showdown.


Во-первых, вы должны действительно использовать новую версию вскрытия, поскольку 0.3.1 очень устарела. https://github.com/showdownjs/showdown/releases

Кроме того, у showdown есть официальный модуль angularjs, который позаботится об угловой интеграции для вас. https://github.com/showdownjs/ng-showdown

живой пример шоудауна + нг-вскрытия вы можете посмотреть в демоверсии http://showdownjs.github.io/demo/


на ваш конкретный вопрос

Уценка чувствительна к отступам. наиболее вероятная проблема с вашим кодом в том, что текст внутри тегов уценки имеет отступ относительно начала строки

например, это не будет работать:

<div>
    <div>
        <markdown>
        # Hello World!
        - Zeppelin
        - That guy
        - Kronos
        </markdown>
    </div>
</div>

пока это будет:

<div>
    <div>
        <markdown>
# Hello World!
- Zeppelin
- That guy
- Kronos
        </markdown>
    </div>
</div>
Другие вопросы по тегам