0

我正在使用以下示例: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'

任何想法,什么会导致这种行为?与我的其他模块之一有任何已知的不兼容性吗?

4

1 回答 1

2

免责声明:我是摊牌目前的项目负责人。


首先你应该真正使用新版本的摊牌,因为 0.3.1 已经过时了。 https://github.com/showdownjs/showdown/releases

此外,showdown 有一个官方的 angularjs 模块,可以为您处理角度集成。https://github.com/showdownjs/ng-showdown

对于 showdown + ng-showdown 的实时示例,您可以查看演示 http://showdownjs.github.io/demo/


对于您的具体问题

Markdown 是缩进敏感的。您的代码最可能的问题是markdown标签内的文本相对于行首缩进

例如,这将不起作用:

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

虽然这将:

<div>
    <div>
        <markdown>
# Hello World!
- Zeppelin
- That guy
- Kronos
        </markdown>
    </div>
</div>
于 2015-10-24T12:35:47.000 回答