可以在Handlebars表达式中进行操作吗?

时间:2014-06-05 04:11:26

标签: handlebars.js

假设我想在Handlebars输出中添加一个美元符号:

${{price}}

当价格实际评估为数字时,最终输出看起来不错:$100

但是,当价格尚未定义时,输出只是一个孤独的美元符号$,看起来很奇怪,只是单独坐在页面上。

我可以定义Handlebars帮助器以包含美元符号:

Handlebars.registerHelper('priceWithDollarSign', function() {
  return( "$" + totalPrice );
});

但是我需要定义第二个帮助器来显示它而没有美元符号:

Handlebars.registerHelper('priceWithoutDollarSign', function() {
  return totalPrice;
});

是否可以在Handlebars表达式中自行完成?

{{"$" + price}}当我想要美元符号时。

{{price}}因为我不想要美元符号。

通过这种方式,当price未定义时,输出只是空白,并且在页面上看起来并不奇怪。

1 个答案:

答案 0 :(得分:0)

我想出了如何为这个美元符号案例做这件事。我想我可以将其推断到其他类似的情况。

Handlebars.registerHelper("formatToCurrency", function(number, plain) {
  if (number && plain) {
    return number; //return the plain number
  } else if (number && plain == null ) {
    return ("$" + number); //return the number with $ sign
  } else {
    return null; //return nothing
  }
});

如果我这样做

{{formatToCurrency price null}}

我得到100

如果我这样做

{{formatToCurrency price}}

我得到$100

如果未定义price,则它只是空白。