Вскрытие создает неправильный вывод
Я использую следующий пример: 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>