Помощник теряет родительский контекст при заключении в пользовательский блок

У меня есть блок Handlebars, который отлично отображался, пока я не обернул его в пользовательский блок. В частности, есть вызов родительского контекста для получения типа 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.

Вопрос в том, как мне сделать так, чтобы доступ к родительскому контексту снова работал?


person Mike Perrenoud    schedule 24.02.2016    source источник


Ответы (1)


Итак, я понял это. Вы должны подняться еще на один уровень. Это не обязательно родительский контекст в объектном смысле, это вспомогательный родительский контекст, поэтому чем глубже вы продвигаетесь, тем выше стек, как структура каталогов.

Новый код выглядит так:

<strong>{{currency ../../Currency}}{{priceFormat PricePerBillingPeriod}}</strong>
person Mike Perrenoud    schedule 24.02.2016