0

我有一块 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例子。

问题是,我如何获得它以便再次到达父上下文?

4

1 回答 1

0

好的,所以我想通了。你必须再上一层。它不一定是对象意义上的父上下文,它是辅助父上下文,所以你越深入,它就像目录结构一样向上移动。

新代码如下所示:

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