0

カスタム ブロックにラップするまでは正常にレンダリングされていたハンドルバーのブロックがあります。具体的には、型を取得するための親コンテキストへの呼び出しがありますCurrency。この Handlebars ブロックは次のようにラップされていることに注意してeachください。

{{#each this.SubscriptionOptions.MonthlySubscriptions}}

問題がどこにあるかははっきりとわかっていますが、それを解決する方法がわかりません。

ハンドルバーのブロックは次のとおりです。

<p class="lead" style="font-size:40px">
  {{#ifGreaterThanZero PricePerBillingPeriod}}
    <strong>{{currency ../Currency}}{{priceFormat PricePerBillingPeriod}}</strong>
  {{else}}
    <strong>FREE</strong>
  {{/ifGreaterThanZero}}
</p>

現在失敗している部分はこれです:

{{currency ../Currency}}

ifGreaterThanZeroヘルパー コードは次のとおりです。

Handlebars.registerHelper('ifGreaterThanZero', function(value, options) {
  var intVal = parseInt(value);
  if (intVal) {
    return options.fn(this);
  } else {
    options.inverse(this);
  }
});

を調べてみましthisたが、実際にはサブスクリプション オプション自体であるためPricePerBillingPeriod、例が含まれています。

問題は、親コンテキストへの到達が再び機能するようにするにはどうすればよいかということです。

4

1 に答える 1

0

さて、私はそれを理解しました。もう1レベル上がらなければなりません。これは必ずしもオブジェクトの意味での親コンテキストではなく、ヘルパーの親コンテキストであるため、深くなるほど、ディレクトリ構造のようにスタックを上に移動します。

新しいコードは次のようになります。

<strong>{{currency ../../Currency}}{{priceFormat PricePerBillingPeriod}}</strong>
于 2016-02-24T16:34:51.570 に答える