0

期待どおりにレンダリングされるコンパイル済みのハンドルバー テンプレートがあります。

プリコンパイルしているテンプレートに埋め込み (プリコンパイルされていない) 部分参照を追加することにしましたが、パーシャルのコンテンツが適切にレンダリングされません。

最終結果は、埋め込まれたパーシャルのコンテンツがレンダリングされた HTML に含まれることです (私のパーシャルは「部分的に」機能していると思います :-D )。

  1. パーシャルの名前も各行に含まれています
  2. パーシャルの式にデータが入力されていません

これは、レンダリングされる HTML です。部分的な名前の 3 行をtemplateBodyItemNumberPartial以下に示します (部分的な名前は、出力の各行の前に付けられているようです) <span>

<div class="templateBodyItem">
    templateBodyItemNumberPartial
templateBodyItemNumberPartial            <span class="templateBodyItemNumber"></span>
templateBodyItemNumberPartial         
    this is my body text
    <div class="templateBodyItemFooter">this is my footer text</div>
</div>

templateBodyItemNumberPartialこれは、部分を参照するメインのプリコンパイル済みテンプレートです。

{{! templates/nameWithPartial.handlebars }}
{{! precompiled via: handlebars ./templates/nameWithPartial.handlebars -f external_template_with_partial.js }}
<div class="templateBodyItem">
    {{> templateBodyItemNumberPartial }} 
    {{ templateBodyItem }}
    <div class="templateBodyItemFooter">{{ templateBodyFooter }}</div>
</div>

nameWithPartialこれは、パーシャルを定義/登録し、コンパイル済みのテンプレートを呼び出す .html ファイルです。

<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>
<script type="text/javascript" src="./external_template_with_partial.js"></script>

<script id="templateBodyItemNumberPartial" type="text/x-handlebars-template">
    <span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>
</script>

var templateBodyObject = {
    templateBodyItemNumber : 4 ,
    templateBodyItem : 'this is my body text' ,
    templateBodyFooter : 'this is my footer text'                                    
};

// verify that the partial html is what I think it should be
console.log( $( '#templateBodyItemNumberPartial' ).html() );
//=> <span class="templateBodyItemNumber">{{ templateBodyItemNumber }}</span>

Handlebars.registerPartial( 'templateBodyItemNumberPartial' , $( '#templateBodyItemNumberPartial' ).html() );
var templateHtml = Handlebars.templates.nameWithPartial( templateBodyObject );

パーシャルがハンドルバーでどのように機能するかをテストするためだけに、埋め込まれたパーシャルを使用しようとしています。

この機能がサポートされているかどうかを誰かが確認できますか、またはパーシャルを参照するメイン テンプレートがプリコンパイルされている場合、プリコンパイルされたパーシャルを使用する必要がありますか?

どうもありがとう!

ところで、私はWin7 Pro 64ビットを実行していますが、うまくいけばそれは問題ではありません...

4

1 に答える 1

0

この問題は、ハンドルバーを @1.3.0 にロールバックすることで解決されるようです。

上記のコードを次の 1 行から変更しました。

<script type="text/javascript" src="./handlebars-v2.0.0-alpha.4.js"></script>

に:

<script type="text/javascript" src="./handlebars-v1.3.0.js"></script>

次に、ハンドルバー CLI を @1.3.0 にロールバックしました。

$ npm install -g handlebars@1.3.0

外部テンプレートを再コンパイルしました。

$ handlebars ./templates/name_with_partial.handlebars -f external_template_with_partial.js

パーシャルと @v2.0.0-alpha.4 に問題があるか、この最新バージョンのパーシャル機能が変更されていると思います。名前に「アルファ」が含まれるものを使用することで得られるものに値します。:)

ああ、聞いてくれてありがとう。

于 2014-08-25T23:15:56.083 に答える