把手#if和数字零

ccl*_*eve 14 handlebars.js

在我的Handlebars模板中,我检查是否存在变量,并在其中呈现一些文本:

{{#if foo}}
  some text
{{/if}}
Run Code Online (Sandbox Code Playgroud)

如果foo是文本或foo是数字但不是零,这可以正常工作.但如果

var foo = 0;
Run Code Online (Sandbox Code Playgroud)

然后{{#if foo}}返回false.

这似乎是另一个Javascript古怪,因为Javascript本身的行为方式相同.但是,在Javascript代码中,您可以通过检查变量是否为"未定义"来解决此问题.

我怎样才能在Handlebars中做同样的事情?

我可以写一个{{#exists}}帮手,但我希望有内置的东西.

alb*_*jan 28

内置了一些内容:

{{#if foo includeZero=true}}
    foo!
{{/if}}
Run Code Online (Sandbox Code Playgroud)

这显示的foo!时间foo0.


Sha*_*ane 17

我会更好地为{{else}}条件提供一个案例......

/**
 * The {{#exists}} helper checks if a variable is defined.
 */
Handlebars.registerHelper('exists', function(variable, options) {
    if (typeof variable !== 'undefined') {
        return options.fn(this);
    } else {
        return options.inverse(this);
    }
});
Run Code Online (Sandbox Code Playgroud)

现在你可以拥有:

{{#exists myvar}}
  <p>Value of myvar is ... {{myvar}}</p>
{{else}}
  <p>Please supply a myvar</p>
{{/exists}}
Run Code Online (Sandbox Code Playgroud)