1

genshiテンプレート内に口ひげ/ハンドルバーテンプレートをレンダリングしたいと思います。Genshiは、口ひげのタグが原因でTemplateSyntaxErrorを発生させているようです。

ここに投稿されているように、CDATAタグを内側と外側のどちらかに配置しようとしました<script>

<script id="some-template" type="text/x-mustache-template">
    <![CDATA[
    ... my template here ...
    ]]>
</script>

私がそうしているので$('#some-template').html()、HandlebarsはCDATAタグを残りのhtmlと一緒にレンダリングするだけで、結果を台無しにします。

<![CDATA[
<script id="some-template" type="text/x-mustache-template">
    ... my template here ...
</script>
]]>

<script>このようにして、ブラウザは最初のタグにコメントを付けます。

また、CDATAにコメントを付けると<!-- -->エラーが発生し、スクリプト内でを使用する/* */と、ハンドルバーがそのまま印刷します。

テンプレートのチャンクを解析しないようにGenshiに指示する方法はありますか?

ありがとう!

4

2 に答える 2

1

これが役立つかどうかはわかりませんが、同様の問題が発生しました。

XMLパーサーを介して実行されているマークアップのチャンクがあります。これは、後でスクリプトによってコンパイルされるDOMにハンドルバーテンプレートを追加します。

ハンドルバーテンプレートをXMLパーサーを通過させるには、CDATAブロックでラップする必要がありましたが、それが原因で同様の問題が発生していました。スクリプトタグ内にCDATAを配置すると、テンプレートマークアップの最初のビットがコメントに飲み込まれていました。それらを外部に置くと、テンプレート全体がコメント化されており、コンパイルするためのスクリプト呼び出しでは到達できませんでした。

次のように、飲み込むための不要なシールドとしてHTMLコメントを挿入することで回避できました。

<div id="contentChunk">
    <div id="blah" class="foo">
        Some vanilla HTML being added.
    </div>
    <script id="hbTemplate" type="text/x-handlebars-template">
        <![CDATA[
        <!-- blocker comment: first html node of handlebars script gets swallowed. -->
        {{#each data.items}}
        <div id="item{{id}}">{{{name}}}</div>
        {{/each}}
        <!-- ]]> -->
    </script>
</div>

また、末尾のCDATAクローズタグをコメントでラップしました。そうしないと、リテラル]]>をレンダリングするようになりました。

于 2013-07-02T16:11:40.597 に答える
1

CDATA区切り文字を口ひげのコメント内に入れることができます。

<script id="some-template" type="text/x-mustache-template">
    {{! <![CDATA[ }}
    ... my template here ...
    {{! ]]> }}
</script>

(これは基本的に、 JavaScriptスクリプトを使用する場合// <![CDATA[と同じトリックです。)// ]]>

于 2013-08-09T19:07:33.853 に答える