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'

この動作の原因は何ですか? 他のモジュールの 1 つとの既知の非互換性はありますか?

4

1 に答える 1

2

免責事項: 私はショーダウンの現在のプロジェクト リーダーです。


0.3.1 は非常に古いため、最初に新しいバージョンの showdown を実際に使用する必要があります。 https://github.com/showdownjs/showdown/releases

また、showdown には、angular 統合を処理する公式の angularjs モジュールがあります。https://github.com/showdownjs/ng-showdown

showdown + ng-showdown の実際の例については、デモ http://showdownjs.github.io/demo/を確認できます。


あなたの特定の質問のために

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 に答える